我發現SQL相關的問題很難用對話表達,所以請原諒我,如果這沒有意義。MySQL查詢條件或子查詢
我正在將數據從CMS數據庫遷移到MySQL,我希望儘可能簡化數據結構。當前類別方案有7個類別並且具有項目到類別關係設置爲多對多,所以需要聯結表。
這會更好地設置爲兩個一對多的關係,以便不需要額外的表。實際類別設置我需要如下:
類別1
Option 1
Option 2
類別2
Option 3
Option 4
Option 5
Option 6
Option 7
每個項目屬於用於Category 1
一個值,以及用於一個值Category 2
。這是我創建查詢的一般形式:
SELECT items.entry_id, categories.cat_id
FROM items
INNER JOIN categories
ON items.entry_id = categories.entry_id
WHERE items.item_type = 6
我怎麼想補充一個條件或子查詢,使我得到了SELECT
條款,如結果:
SELECT items.entry_id, categories.cat_id1, categories.cat_id2
其中cat_id1
和cat_id2
的值是上述值嗎?
**** ****更新我 取得了一些進展得到我所需要的查詢(表太複雜,張貼在這裏的例子,但在這裏是一個簡單的查詢):
SELECT exp_weblog_data.entry_id,
exp_weblog_data.field_id_27 AS Title,
exp_weblog_data.field_id_29,
exp_weblog_data.field_id_32,
exp_weblog_data.field_id_33,
exp_weblog_data.field_id_28,
exp_weblog_data.field_id_84,
exp_relationships.rel_child_id,
CASE WHEN exp_category_posts.cat_id = '15' OR exp_category_posts.cat_id = '16' THEN exp_category_posts.cat_id END as cat1,
CASE WHEN exp_category_posts.cat_id = '17' OR exp_category_posts.cat_id = '20' THEN exp_category_posts.cat_id END as cat2
FROM exp_weblog_data
INNER JOIN exp_relationships
ON exp_weblog_data.entry_id = exp_relationships.rel_parent_id
INNER JOIN exp_category_posts
ON exp_weblog_data.entry_id = exp_category_posts.entry_id
WHERE exp_weblog_data.weblog_id = 6
這讓我想到了Cat1和Cat2所需的兩列,但這裏仍然存在兩個問題--exp_category_posts上的內部連接導致每個記錄有2行,我只希望entry_id的每個值有一行。其次,在case語句中,如果cat_id = 15,我想設置A的值,如果cat_id = 16,則設置B的值,但我似乎無法找到正確的語法,而不會出錯。
我希望這可以清理一些東西!
也許你可以拍一張你的桌子的照片,難以置信你只用文字 – marjes 2015-03-03 01:24:39
樣本數據和理想的結果是解釋事物的好方法。 – 2015-03-03 01:40:00
我同意,但這個CMS數據庫是一個巨大的混亂,它很難使用一個真正的例子,當我有100列,但只需要6或7個。我會嘗試弄清楚如何清除它。 – Ditchmonkey 2015-03-03 04:54:39