2010-10-05 76 views
0

我有表dates如下在LEFT MySQL的多個變量JOIN

"dates" "one" "two" "three" "four" 
date1 id1 id2 id3 id4 
date2 id3 id1 id4 id2 

和第二臺id2name

"ids" "names" 
id1 name1 
id2 name2 
id3 name3 
id4 name4 

我有心理障礙想寫

SELECT * FROM dates WHERE `date`='$date' LEFT JOIN `id2name` ON ... 

什麼子句是否放入ON來獲取名稱而不是ID?

回答

3

你的模型看起來非規範化的,但這應該讓你開始:

SELECT 
    d.`date`, 
    i1.names AS name1, 
    i2.names AS name2, 
    ... 
FROM dates d 
LEFT JOIN `id2name` i1 ON (i1.ids = d.one) 
LEFT JOIN `id2name` i2 ON (i2.ids = d.two) 
... 
WHERE `date`='$date' 
+0

謝謝!它實際上工作!現在我需要弄清楚 - 如何.. – selytch 2010-10-05 08:10:53

+0

另外,你會提出什麼結構?欣賞答案! – selytch 2010-10-05 08:11:49

+0

@selytch:建議的模型將取決於您的要求。如果每個「日期」總是有4個'ids',並且您需要像這樣選擇它們,那麼您的模型將可以正常工作。如果有更多的ID會來('五','六'),那麼你必須改變你的模型每個新的'ID'。隨意提交解釋你的模型和你需要它的另一個問題。 – 2010-10-05 08:21:23

0

據我所知,你可以在一個ID在同一時間只能加入,所以你要做的每一列上加入有這些ID的