У меня есть 3 таблицы:Хороший способ запроса для кросс-таблицы
A(k1,A)
B(k1,k2,B)
и C(k2,C)
.
Я хочу отфильтровать все A, удовлетворяющие условию C.k2. в этом примере, я должен фильтровать пройти через таблицу B: фильтровать все B, которые имеют один и тот же атрибут k1 с A, и фильтровать все атрибуты C k2 с помощью B (которые я ранее фильтровал).
У меня есть уродливый способ сделать это:
select * from A where k1 in (select * .....)
// это выглядит некрасиво и трудно проследить
У меня есть, хотя об использовании join
функции, но на самом деле не знаю, как это сделать. Скажите, пожалуйста, лучший способ для этого запроса.
Спасибо :)
Можете ли вы разместить структуру своего стола? Не получил ваш язык –
Ваш «уродливый» метод гарантирует, что вы не получите повторяющиеся строки 'A', которые вы можете получить с помощью объединения, если вы не сделаете что-то вроде' select a a. * ... ' –