1

これは私の国のテーブルです:

id | name

これは私の言語テーブルです:

id | name

これは、それらを結合する countryLanguages テーブルです。

id | country_id | language_id

今、そのような選択を行うクエリを書きたい

language_id | language_name

国 ID=3 の countryLanguages テーブルに language が存在しません。

例:

countries:
1 | US
2 | UK
3 | CHINA

languages:
1 | chinese
2 | spanish
3 | english

countryLanguages:
1 | 1 | 3
2 | 1 | 2
3 | 2 | 3
4 | 3 | 1

そしてそれは返されるべきです:

2 | spanish
3 | english

中国ではスペイン語と英語が話されていないためです。

4

4 に答える 4

0
SELECT DISTINCT cl.language_id, l.name
FROM languages AS l
JOIN countryLanguages AS cl ON cl.language_id = l.id
WHERE cl.country_id != 3
于 2013-07-03T20:42:04.120 に答える
0
select * from languages where id not in (select language_id from countryLanguages where country_id=3)
于 2013-07-03T20:27:27.447 に答える
0

結合を使用したソリューションは次のとおりです。

SELECT DISTINCT
  cl.language_id,
  l.name


FROM languages AS l

JOIN countryLanguages AS cl
  ON cl.language_id = l.id

JOIN countries AS c
  ON c.id = cl.country_id
 AND c.name != 'CHINA'

使用することもできますAND c.id != 3

SQL フィドル

于 2013-07-03T20:28:49.390 に答える