Гость
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как не показывать определенные записи sql? / 5 сообщений из 5, страница 1 из 1
31.03.2019, 16:33
    #39794272
Иван55
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как не показывать определенные записи sql?
Всем привет!
Есть таблица users
id, name, mail
И таблица
ban
id, user, u_id

Смысл в том что пользователю по умолчанию показываются все записи таблицы users.
Но если его внесет в Черный список другой пользователь, по показываются все пользователи минут тот кто его заблокировал

Таблица ЧС выглядит так: id- ключ, user - кто заблокировал, u_id - кого заблокировал


Пробовал сделать так:
Код: sql
1.
 SELECT * from users RIGHT JOIN ban ON (NOT users.id = ban.user) WHERE ( ban.u_id = 1)


1 - это текущий пользователь

Но не работает =(
...
Рейтинг: 0 / 0
31.03.2019, 18:29
    #39794294
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как не показывать определенные записи sql?
Иван55если его внесет в Черный список другой пользователь, по показываются все пользователи минут тот кто его заблокировалЧто-то тут совсем не понятно, кто кого должен толи видеть, то ли блокировать. И при чем тут минуты.

Покажте пример исходных данных и желаемый результат.
...
Рейтинг: 0 / 0
31.03.2019, 23:15
    #39794358
Иван55
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как не показывать определенные записи sql?
vkle, прошу прощения, действительно запутал Вас)

Есть таблица пользователей users
id, name, mail

Есть скрипт который показывает список всех пользователей
Все пользователи видят друг друга...
Так как по умолчанию срабатывает SELECT * from users

Но вдруг один пользователь блокирует другого, это происходит добавлением записи в таблицу ban
Например пользователь 1 заблокировал пользователя 2.
Таблица ban теперь выглядит вот так:
id | user | u_id
1 | 1 | 2

И когда пользователь 2 открывает список всех пользователей, у него не должно отображаться все пользователи, а должно отображаться все, кроме пользователя 1
...
Рейтинг: 0 / 0
31.03.2019, 23:46
    #39794362
Иван55
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как не показывать определенные записи sql?
Иван55,

select *
from users --все
where not id in ( -- минус те кто
select u_id from ban
where ban.user =1 )


Вот так получилось!
...
Рейтинг: 0 / 0
01.04.2019, 08:08
    #39794409
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как не показывать определенные записи sql?
WHERE .. NOT IN - это большое тормозилово, особенно на приличных объёмах. Лучше так:

Код: sql
1.
2.
3.
4.
5.
SELECT users.* 
FROM users
LEFT JOIN ban ON users.id = ban.u_id 
             AND ban.user = 1
WHERE ban.u_id IS NULL



или хотя бы

Код: sql
1.
2.
3.
4.
5.
6.
SELECT *
FROM users
WHERE NOT EXISTS ( SELECT 1
                   FROM ban
                   WHERE users.id = ban.u_id 
                     AND ban.user = 1)
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как не показывать определенные записи sql? / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]