解決します。これは、新しいテーブルを作成するよりも優れたデータベース方法です。
INNER JOINキーワードは、両方のテーブルの列が一致する限り、両方のテーブルのすべての行を選択します。
SELECT *
FROM divisions divis
INNER JOIN districts dis
ON dis.division_id = divis.id
INNER JOIN police_stations pol
ON pol.district_id = dis.id
注:もしあなたが部門を識別するために、何か他のものを使用する必要がありますので、どうやらDIV
キーワードは、MySQLで予約されています。
このデータを使用して新しいテーブルを作成する場合は、CREATE TABLE AS
レシピを使用できます。
これを行うには、元のスキーマを変更する必要があります。新しいテーブルには名前が重複することはできません。元のテーブルにはすべて一意の列があるように変更する必要があります。
たとえば、name
は、district_name
になります。ここで
CREATE TABLE combined AS (
SELECT divis.id, divis.division_name, dis.district_name, pol.police_name
FROM divisions divis
LEFT JOIN districts dis
ON divis.id = dis.division_id
LEFT JOIN police_stations pol
ON pol.district_id = dis.id
);
は、それが
http://sqlfiddle.com/#!9/7ec3b/1/0
これはしかし本当に悪いデータベース設計を実証することであるフィドルです。私の最初の解決策をお勧めします
ご回答ありがとうございます。私はクエリについて質問していない、@リチャードハミルトンのコメントセクションで私の期待を見てください –