2013-04-18 2 views
0

Я создал следующий запрос.Исправить запрос для извлечения данных из трех разных таблиц

SELECT users.id, users.email, aucs.winner_id, aucs.beginner, accounts.user_id 
FROM users, aucs, accounts 
WHERE users.id 
IN (
aucs.winner_id 
) 
AND users.id NOT 
IN (
accounts.user_id 
) 
AND aucs.beginner = '1' 

Я хочу, чтобы выбрать пользователей адреса электронной почты, который появляется только один раз в таблице ППК в колонке winner_id где aucs.beginner должен также быть равен «1» и идентификатор пользователя не доступна в таблице счетов. Я написал запрос, который я поставил выше, не работает.

+0

пожалуйста, напишите схему таблиц –

ответ

1

Это из верхней части моей головы, вам не нужно accounts.user_id так как вы хотите получить записи, в которых user_id отсутствует в аккаунтах.

SELECT users.id as users_id, users.email, aucs.winner_id, aucs.beginner 
FROM users 
LEFT JOIN aucs 
ON aucs.winner_id = users.id 
LEFT JOIN accounts 
ON accounts.user_id = users.id 
WHERE aucs.beginner = '1' AND accounts.id IS NULL 
GROUP BY users.id 
HAVING COUNT(aucs.winner_id) = 1 
+1

Рад, что помог, просто отредактирован, чтобы исправить небольшую опечатку –

1
SELECT DISTINCT 
     users.id, 
     users.email, 
     aucs.winner_id, 
     aucs.beginner, 
     accounts.user_id 
FROM users 
     INNER JOIN aucs 
      ON users.id = aucs.winner_id 
     LEFT JOIN accounts 
      ON aucs.winner_id = accounts.user_id AND 
       aucs.beginner = '1' 
WHERE accounts.user_id IS NULL 

Для дальнейшего получить больше знаний о присоединяется, любезно перейдите по ссылке ниже:

+0

спасибо этот запрос хорошо, но это один показывает мне пользователи идентификатор, которые находятся в таблице счетов также, мне нужны пользователям идентификатор, которые не находятся в таблице счетов, но в ППК таблице как winner_id где aucs.beginner = '1' – Akaash

+0

см. мой обновленный ответ. –

Смежные вопросы