2015-10-25 5 views
0

Я пытаюсь выполнить поиск в двух таблицах, которые связаны через внешний ключ.Поиск в двух таблицах MySQL

Проблема заключается в том, что Мне нужно как-то «слить» два столбца с именем «атрибут» из каждой таблицы и искать в них массив с использованием IN() и для точного совпадения использовать HAVING().

Таблицы выглядеть как этот

First table 
---------- 
id   INT primary key 
name  VARCHAR 
attribute INT 
etc.. 

Second table 
---------- 
id    INT primary key 
attribute  INT 
fg_first_table INT foreign key 

К примеру у меня есть интегрировалась массив (1, 2, 4, 5). Число 1 хранится в первой таблице, а остальные 2, 4, 5 - во втором. Как получить идентификатор из первой таблицы, где эти числа соответствуют атрибуту col в двух таблицах?

Возможно ли это? Благодарю.

ОБНОВЛЕНИЕ: Таблица данных Выберите идентификатор из первой таблицы, где ARRAY (1, 2, 4, 5) совпадает с атрибутом смещ_по_столбцам из обеих таблиц.

First table 
---------- 
id  name    attribute  
----------------------------------------------------- 
1   Something   1 

Second table 
---------- 
id  attribute   fg_first_table 
----------------------------------------------------- 
1   2     1 
2   4     1 
3   5     1 
+2

Можете ли вы добавить данные таблицы, а также ожидаемый результат? – jarlh

+0

Попробуйте перефразировать свой вопрос. Очень неясно, чего вы пытаетесь достичь. –

+0

Пытался сделать это, надеюсь, что это поможет. – George

ответ

0

Поэтому я должен был выяснить это самостоятельно и вот он.

SELECT u.id, COUNT(DISTINCT(u.attribute)) AS attribute_count 
FROM (
    SELECT id, attribute FROM first_table 
    UNION 
    SELECT fg_first_table AS id, attribute FROM second_table 
) AS u 
WHERE 
u.attribute IN (1, 2, 4, 5) 
GROUP BY u.id 
HAVING attribute_count = 4 
ORDER BY RAND(); 

Благодарю вас, я ценю вашу помощь.

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