2016-06-13 4 views
1

私はSQLで少し失われており、特に正しい構文では使用できません。SQLでアソシエーションが空の場合は*を選択しますか?

迅速的には:

+------------------------+------------------+------+-----+---------------------+----------------+ 
| Field     | Type    | Null | Key | Default    | Extra   | 
+------------------------+------------------+------+-----+---------------------+----------------+ 
| id      | int(10) unsigned | NO | PRI | NULL    | auto_increment | 
| slug     | varchar(255)  | NO |  | NULL    |    | 
| title     | varchar(255)  | NO |  | NULL    |    | 
| resume     | varchar(255)  | NO |  | NULL    |    | 
| country_id    | varchar(255)  | NO |  | NULL    |    | 
| city_id    | varchar(255)  | NO |  | NULL    |    | 
+------------------------+------------------+------+-----+---------------------+----------------+ 

そして、我々は都市を持っている:これらは、我々は製品を持っている私のテーブル

ある私が見つけたい何

+------------------+------------------+------+-----+---------------------+----------------+ 
| Field   | Type    | Null | Key | Default    | Extra   | 
+------------------+------------------+------+-----+---------------------+----------------+ 
| id    | int(10) unsigned | NO | PRI | NULL    | auto_increment | 
| country_id  | int(11)   | NO |  | NULL    |    | 
| name    | varchar(255)  | NO |  | NULL    |    | 
+------------------+------------------+------+-----+---------------------+----------------+ 

はない都市です商品はです。 = 0(products.city_id = cities.id ON SELECT * FROM都市INNERが 製品を登録しよう)

SELECT名 都市 FROM COUNT;:

だから、基本的に私はこのような何かを試してみました

は私がCOUNT作品は、誰かがこの1にどのように役立つかの誤解を持っていると思いますか?

答えて

3

あなたはNOT EXISTSでそれを行うことができます。

SELECT name 
FROM cities AS c 
WHERE NOT EXISTS (SELECT 1 
        FROM products AS p 
        WHERE p.city_id = c.id) 

上記のクエリは、製品にリンクされていないすべての都市の名前を返します。

+0

[OK]を素晴らしいものは、私はちょうど 'PLS 1 'SELECTでの強調表示のビットを持つことができますか? –

+0

@Baldráni 'NOT EXISTS'は' products'テーブルの少なくとも一つのレコードが 'cities'テーブルのレコードに関連しているかどうかをチェックするだけです。サブクエリの 'SELECT'節で返されるフィールドは必要ありません。したがって、 'SELECT 1'だけで十分です。 –

+0

オクラホマ大変ありがとうございます! –

1

次のクエリを使用することができます。

SELECT name 
FROM cities 
WHERE id NOT IN (
    SELECT DISTINCT city_id FROM products 
) 
関連する問題