1

我有 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 帖子,并用谷歌搜索无济于事。

任何援助将不胜感激。

4

1 回答 1

2

好吧,你为什么要使用通配符 ( %) 来加入?,你不能store_id使用store_number完全匹配吗?。此外,为了清楚起见,您应该使用显式JOINs:

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
于 2013-02-04T19:35:56.193 回答