powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как не показывать определенные записи sql?
5 сообщений из 5, страница 1 из 1
Как не показывать определенные записи sql?
    #39794272
Иван55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!
Есть таблица 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
Как не показывать определенные записи sql?
    #39794294
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иван55если его внесет в Черный список другой пользователь, по показываются все пользователи минут тот кто его заблокировалЧто-то тут совсем не понятно, кто кого должен толи видеть, то ли блокировать. И при чем тут минуты.

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

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

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

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

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

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


Вот так получилось!
...
Рейтинг: 0 / 0
Как не показывать определенные записи sql?
    #39794409
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
5 сообщений из 5, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как не показывать определенные записи sql?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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