私は複数のテーブル(剥離概要)のセットを有する:MySQL:複数の選択、複数の結合?
Brand;
+--------------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------------+--------------+------+-----+---------+-------+
| id | tinyint(10) | NO | PRI | NULL | |
| name | varchar(255) | NO | | NULL | |
+--------------------+--------------+------+-----+---------+-------+
Relations;
+--------------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------------+--------------+------+-----+---------+-------+
| id1 | tinyint(10) | NO | PRI | NULL | |
| id2 | tinyint(10) | NO | PRI | NULL | |
+--------------------+--------------+------+-----+---------+-------+
Country;
+--------------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------------+--------------+------+-----+---------+-------+
| id | tinyint(10) | NO | PRI | NULL | |
| name | varchar(255) | NO | | NULL | |
+--------------------+--------------+------+-----+---------+-------+
City;
+--------------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------------+--------------+------+-----+---------+-------+
| id | tinyint(10) | NO | PRI | NULL | |
| name | varchar(255) | NO | | NULL | |
+--------------------+--------------+------+-----+---------+-------+
各行は、一意のIDを有しています。ブランド表の各行は、国と都市との関係を持っています。これらの表の関係はリレーション表に格納されているため、各ブランド行のリレーション表には2つの行があります。
特定のブランドIDのブランド名、国名、都市名を取得しようとしています。私は個々の選択肢によってこれらの関係を選択することができますが、私の目標は(可能であれば)単一のクエリでそれを行うことです。
私は関係(国)のいずれかを取得することができるが、私は同様に街を取得したい:
SELECT Brand.name as brand, Country.name as country
FROM Brand
LEFT JOIN _relations
ON Relations.id1 = Brand.id
INNER JOIN Country
ON Country.id = Relations.id2
WHERE Brand.id = '123456';
結果:
を:+-----------+-------------+
| brand | country |
+-----------+-------------+
| brandname | countryname |
+-----------+-------------+
私の目標は、取得することです
+-----------+-------------+-------------+
| brand | country | city |
+-----------+-------------+-------------+
| brandname | countryname | cityname |
+-----------+-------------+-------------+
誰でも私にこれを助けたり、正しい方向に私を指摘できますか?
グレートのようなものは、それは完璧なソリューションでした、ありがとうございました。しかし、私は新しい問題に遭遇しました。ブランドに都市が存在しない場合はどうなりますか?リレーションテーブルに都市IDが見つからない場合は、0行が返されるようになりました。ジョインを無視し、Cityフィールドのnullまたはおそらくカスタム値を返す方法はありますか?結果の代わりに、ブランド名、国名、空の都市フィールドを取得したいと思います。 – Tod
内側の代わりに外側の結合。 –