2014-10-25 3 views
0

У меня есть 4 таблицы:Mysql РЕГИСТРИРУЙТЕСЬ одну таблицу с несколькими таблицами

ADS: идентификатор, текст, номер

TABLE2: идентификатор, user_id, номер
TABLE3: идентификатор, user_id, номер
TABLE4: id, user_id, номер

user_id не уникален. Может существовать или нет.

Выход Я хотел бы иметь:
Если номер из ADS таблицы равно числу из TABLE1 ИЛИ TABLE2 ИЛИ TABLE3, отображение текста - только из них.

Я пробовал:

SELECT ADS.text FROM ADS 
LEFT JOIN TABLE2 ON TABLE2.user_id = ? 
LEFT JOIN TABLE3 ON TABLE3.user_id = ? 
LEFT JOIN TABLE4 ON TABLE4.user_id = ? 
WHERE ADS.number = TABLE2.number OR 
ADS.number = TABLE3.number OR 
ADS.number = TABLE4.number 
GROUP BY ADS.id 

и

SELECT * FROM 
(
SELECT 
ADS.text FROM ADS 
LEFT JOIN TABLE2 ON TABLE2.user_id = ? 
LEFT JOIN TABLE3 ON TABLE3.user_id = ? 
LEFT JOIN TABLE4 ON TABLE4.user_id = ? 
WHERE ADS.number = TABLE2.number OR 
ADS.number = TABLE3.number OR 
ADS.number = TABLE4.number 

UNION ALL 

SELECT 
ADS.text FROM ADS 
LEFT JOIN TABLE2 ON TABLE2.user_id = ? 
LEFT JOIN TABLE3 ON TABLE3.user_id = ? 
LEFT JOIN TABLE4 ON TABLE4.user_id = ? 
WHERE ADS.number = TABLE2.number OR 
ADS.number = TABLE3.number OR 
ADS.number = TABLE4.number 
) request 
ORDER BY ADS.id 

$reponse->execute(array($_SESSION['id'],$_SESSION['id'],$_SESSION['id'])); 

Я всегда слишком много или недостаточно выход ...

+0

Вы можете отредактировать свой вопрос и предоставить образцы данных и желаемые результаты? –

ответ

1

это делать то, что вы хотите ли?

SELECT ADS.text 
FROM ADS a 
WHERE EXISTS (SELECT 1 FROM TABLE2 t WHERE t.user_id = ? AND t.number = a.number) OR 
     EXISTS (SELECT 1 FROM TABLE3 t WHERE t.user_id = ? AND t.number = a.number) OR 
     EXISTS (SELECT 1 FROM TABLE4 t WHERE t.user_id = ? AND t.number = a.number); 
Смежные вопросы