2013-02-04 148 views
1

我認爲是成立像這樣3臺先進的MySQL查詢問題:與非唯一值

Quotes Table      Stores Table  
id store_id date_submitted  store_number code 
1 15   1/29/13 23:13  15   ANT 
2 16   1/30/13 7:47  16   MAT 

Leads Table 
code user_name 
MAT   User1 
ANT   User2 

我希望能夠做的就是讓查詢在報價表中返回所有的值,然後是Stores表中的代碼值以及Leads表中的user_name。我想它是這個樣子:

id store_id date_submitted code user_name 
1 15   1/29/13 23:13 ANT User2 
2 16   1/30/13 7:47 MAT User1 

我有我寫了下面的查詢:

SELECT id, store_id, date_submitted, code, user_name FROM quotes q, stores s, leads l WHERE CONCAT('%', q.store_id, '%') LIKE CONCAT('%', s.store_number, '%') AND s.code=l.code AND date_submitted > "2013-01-01 00:00:00" AND date_submitted < "2013-01-31 23:59:59" GROUP BY q.id 

我運行到這個問題,是該數據庫不匹配的代碼到正確的store_id。

我不確定我在做什麼錯在這裏,我看過幾個SO帖子,並且用它搜索無效。

任何援助將不勝感激。

回答

2

那麼,爲什麼你使用通配符(%)加入store_idstore_number?,你不能使用完全匹配嗎?此外,只是爲了清楚起見,你應該使用明確JOIN S:

SELECT id, store_id, date_submitted, code, user_name 
FROM quotes q 
INNER JOIN stores s 
    ON q.store_id = s.store_number 
INNER JOIN leads l 
    ON s.code=l.code 
WHERE date_submitted > "2013-01-01 00:00:00" 
AND date_submitted < "2013-01-31 23:59:59" 
GROUP BY q.id 
+2

不--just--爲清楚起見 – Strawberry

+0

謝謝,我用的是(%)的原因是因爲一些商店的ID已經前導零,但我最後使用TRIM代替。 – mysticgohan53