具有非唯一值的高级MySQL查询问题

时间:2013-02-04 19:31:07

标签: mysql sql

我有3个表设置如下:

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表中的代码值和引导表中的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帖子,并用谷歌搜索无效。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:2)

那么,为什么你使用通配符(%)与store_id加入store_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