[英]MySQL Selecting Rows and Grouping
我有一個名為field_values
的(Joomla)數據庫表,其內容如下;
+----+----------+---------+---------+
| id | field_id | item_id | value |
+----+----------+---------+---------+
| 1 | 2 | 446 | Jones |
| 2 | 2 | 447 | Smith |
| 3 | 2 | 448 | Jenkins |
| 4 | 3 | 446 | Paul |
| 5 | 3 | 447 | Peter |
| 6 | 3 | 448 | Sally |
| 7 | 4 | 446 | London |
| 8 | 4 | 447 | Dublin |
| 9 | 4 | 448 | Paris |
+----+----------+---------+---------+
我只顯示表中的9行,但實際上有數千行,因此成功查詢需要考慮到這一點。
專欄說明;
fields
表, 2
=姓, 3
=名字, 4
=位置) users
表) 如何從上表中選擇所有值,但顯示如下:
+------------+-----------+----------+
| first_name | last_name | location |
+------------+-----------+----------+
| Paul | Jones | London |
| Peter | Smith | Dublin |
| Sally | Jenkins | Paris |
+------------+-----------+----------+
id
字段在上面想要的結果中並不是必需的,我只是添加了它以強調每一行都是唯一的。
我不確定是否需要使用子查詢或分組依據,也許兩者都不用?
提前致謝。
樞紐查詢應該在這里工作:
SELECT
MAX(CASE WHEN field_id = 3 THEN value END) AS first_name,
MAX(CASE WHEN field_id = 2 THEN value END) AS last_name,
MAX(CASE WHEN field_id = 4 THEN value END) AS location
FROM yourTable
GROUP BY
item_id
ORDER BY
item_id;
您當前的表結構是非規范化的鍵值存儲,這是WordPress在某些表中使用的樣式。
您可以避免子查詢和麻煩。 您可以在同一張桌子上使用3次
select a.id, b.value firts_name, a.value last_name , c.value location
from field_values a
inner join field_values b on a.item_id = b.item_id and b.field_id = 3
inner join field_values bc on a.item_id = c.item_id and b.field_id = 4
where a.item_id = 2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.