2016-11-13 2 views
4

У меня есть таблица, которая имеет два столбца с двумя внешними ключами из двух разных таблиц.Как получить пересечение двух запросов в mysql

это мое отношение таблица:

table

Я хочу, чтобы выбрать те, студент, который может говорить как язык с идентификатором 3 и 4.

Как может я написал запрос, чтобы дать мне для бывший 12, 14

ответ

4

Предположим, ваше отношение называется «моя-связь»:

SELECT R1.student_Id FROM my-Relation R1 join my-Relation R2 on R1.student_id = R2.student_id where R1.language_Id = '3' and R2.language_id = '4' 
+0

спасибо за вас хороший ответ –

4

Вы можете дать ему попробовать:

SELECT 
student_id, 
COUNT(*) total 
FROM your_table 
WHERE language_id IN (3,4) 
GROUP BY student_id 
HAVING COUNT(*) = 2; 

Только IN не гарантирует, что учащийся участвует как на языке id 3 & 4.

Вы должны использовать GROUP BY student_id HAVING COUNT(*) = 2 для того, чтобы обеспечить эти student_id с, чтобы быть в результате, которые были вовлечены как в language id 3 & 4


Другим решением будет использовать INNER JOIN. Но он не масштабируется.

SELECT 
A.student_id 
FROM your_table A 
INNER JOIN your_table B ON A.student_id = B.student_id 
    AND A.language_id = 3 AND B.language_id = 4 
+0

Большое спасибо за хороший ответ –

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