В PHP, как я могу запросить базу данных MySQL, используя несколько операторов «IN» для разных таблиц? - PullRequest
0 голосов
/ 12 сентября 2011

Я пытаюсь понять, как получить два оператора "IN".

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

$query_row=mysql_query(
    "SELECT DISTINCT * FROM table_a WHERE field_1 IN 
        (SELECT field_1 FROM table_b WHERE field_2 = $field_2), 
        (SELECT field_3 FROM table_c WHERE field_4 = $field_4)
        ORDER BY field_5 DESC
        ");

Если я удаляю один из (SELECT... битов, он работает, но попытка установить их оба не дает.

Таблица a имеет совпадающие значения в таблицах B и C: поля 2 и 4 соответственно.

Как мне заставить это работать?

Ответы [ 2 ]

2 голосов
/ 12 сентября 2011

Вы можете попробовать это с СОЮЗОМ:

SELECT DISTINCT * 
    FROM table_a 
    WHERE field_1 IN (SELECT field_1 FROM table_b WHERE field_2 = $field_2 
                      UNION 
                      SELECT field_3 FROM table_c WHERE field_4 = $field_4)
    ORDER BY field_5 DESC
2 голосов
/ 12 сентября 2011

В зависимости от того, хотите ли вы проверить, является ли IN одним или обоими:

WHERE field_1 IN (SELECT field_1 FROM table_b WHERE field_2 = $field_2) AND/OR field_1 IN (SELECT field_3 FROM table_c WHERE field_4 = $field_4) ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...