1

tally_sheets次の説明のようないくつかの集計シート情報を含むテーブルと、カンマで区切られた集計シートの ID のリストを含むフィールドを持つ以下で説明するテーブルがあるとしますpersonstally_sheets

すべての集計シートには、国と都市の組み合わせからの人々のみが含まれています。

テーブルのすべてのフィールドtally_sheetsとフィールドcountryを含むすべての集計シートのリストを取得する方法は?citypersons

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              |
+------+------------+--------------------+

私が間違っているのは何ですか?どうもありがとう!

4

1 に答える 1