MySQLクエリの完成に問題があります。テーブルのチケット、請求書の行、ユーザーを組み合わせたと想像してみてください。各チケットには1つ以上の請求書行があり、各ユーザーは1つ以上のチケットを持つことができます。
名前バッジの作成に使用できるクエリを作成しようとしています。このバッジについては、その人が登録した名前とアイテムを知る必要があります。
次のMySQLクエリを作成しました
SELECT u.firstName, u.lastName, il.invID, il.name,
CASE
WHEN il.name = 'Conference Dinner'
THEN 'Diner'
END AS 'conference_dinner',
CASE
WHEN il.name = 'Regular Conference Fee' THEN 'Conference'
WHEN il.name = 'Conference Fee for Phd. Students' THEN 'Conference'
END AS 'conference',
CASE
WHEN il.name = 'Pre-Conference Fee' THEN 'Pre-Conference'
END AS 'pre_conference',
FROM invoice_line il, events_tickets et, users u
WHERE il.invID = et.invID
AND et.userID = u.ID
クエリはほぼ問題ありませんが、3つの請求書行(= 3つのアイテム)がテーブルに3行あるユーザーに対しては、これらの3つの行を1つの行にマージしたいと思います。ユーザーIDのGroupByは1行になりますが、作成された列が1行にマージされない場合よりも、そのうちの1つだけが表示されます。
私はこれを行うために間違った方法を使用した可能性があります。ただし、次のようなテーブルになるはずです。
firstName | lastName | conference_diner | conference | pre_conference |
----------------------------------------------------------------------
John | Doe | Diner | Conference | |
Jane | Norman | | Conference | Pre-Conference |
Martijn | Thomas | | Conference | |
Pete | Johns | | | Pre-Conference |
現在、これは次の結果になります。
firstName | lastName | conference_diner | conference | pre_conference |
----------------------------------------------------------------------
John | Doe | Diner | | |
John | Doe | | Conference | |
Jane | Norman | | Conference | |
Jane | Norman | | | Pre-Conference |
Martijn | Thomas | | Conference | |
Pete | Johns | | | Pre-Conference |
前もって感謝します