Как правильно сформировать sql запрос?

Есть 3 таблицы :
users , wallets , wallet_address
users - id,email,tel
walletes - id,name
wallet_address - id,user_id,wallet_id,value

Нужно показать юзеру абсолютно все кошельки и при условии , что у юзера есть адрес к какому-то кошельку , вывести адрес вместе с кошельком .

SELECT * FROM `wallets`LEFT JOIN `wallet_address` ON (wallets.id = wallet_address.wallet_id) WHERE wallet_address.user_id = 1 OR wallet_address.user_id = null

Пробовал так , в таком случае выведет кошельки почти все как надо,тольно не выведет кошельки к которым в юзера нету адреса , но у другого юзера есть
  • Вопрос задан
  • 123 просмотра
Пригласить эксперта
Ответы на вопрос 1
@mletov
SELECT * FROM `wallets`
LEFT JOIN `wallet_address` 
ON (wallets.id = wallet_address.wallet_id) 
WHERE EXISTS (SELECT user_id
              FROM wallet_address AS t1
              WHERE t1.user_id=1)


Но вообще это плохое решение и лучше проверять наличие прав у юзера отдельным запросом

На один кошелек действительно может приходиться несколько юзеров?

Нужно вывести кошельки с привязкой к каждому юзеру или все-таки по одному разу? Во втором случае JOIN не нужен
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы