tally_sheets
次の説明のようないくつかの集計シート情報を含むテーブルと、カンマで区切られた集計シートの ID のリストを含むフィールドを持つ以下で説明するテーブルがあるとしますpersons
。tally_sheets
すべての集計シートには、国と都市の組み合わせからの人々のみが含まれています。
テーブルのすべてのフィールドtally_sheets
とフィールドcountry
を含むすべての集計シートのリストを取得する方法は?city
persons
mysql> desc tally_sheets;
+-----------+--------------+
| Field | Type |
+-----------+--------------+
| id | int(10) |
| date | char(10) |
| person | varchar(64) |
| comment | varchar(255) |
| timestamp | timestamp |
+-----------+--------------+
mysql> desc persons;
+------------------+--------------+
| Field | Type |
+------------------+--------------+
| id | int(11) |
| name | varchar(30) |
| country | varchar(60) |
| city | varchar(60) |
| tally_sheets | varchar(64) | <== comma separated tally_sheet's ID
+------------------+--------------+
ランニング
SELECT ts.id, ts.date, p.country, p.city, ts.person, ts.`comment`, '0' AS sqlExclude
FROM tally_sheets ts
RIGHT JOIN persons p ON ts.id IN (p.tally_sheets)
GROUP BY p.city
はすべての国/都市の組み合わせを提供しますが、他のすべてのフィールドはNULL
です。
+------+------+------------+--------------------+--------+---------+------------+
| id | date | country | city | person | comment | sqlExclude |
+------+------+------------+--------------------+--------+---------+------------+
| NULL | NULL | Country1 | City1 | NULL | NULL | 0 |
| NULL | NULL | Country1 | City2 | NULL | NULL | 0 |
| NULL | NULL | Country2 | City3 | NULL | NULL | 0 |
+------+------+------------+--------------------+--------+---------+------------+
実行SELECT ts.id, p.country, p.city FROM persons p LEFT JOIN tally_sheets ts ON ts.id IN (p.tally_sheets) GROUP BY p.city
すると、フィールドも返されNULL
ます。
+------+------------+--------------------+
| id | country | city |
+------+------------+--------------------+
| NULL | Country1 | City1 |
| NULL | Country1 | City2 |
| NULL | Country2 | City3 |
+------+------------+--------------------+
私が間違っているのは何ですか?どうもありがとう!