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

私ができるようにしたいのは、クエリがquotesテーブルのすべての値を返し、次に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投稿を調べて、グーグルで検索しても無駄になりました。

どんな援助もいただければ幸いです。

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 に答える