Mysql
加入查詢返回 0 行 - 不可能在哪裡
我的查詢是使用 PDO 準備語句從 php Web 請求執行的。
:brand
我想要的輸出是按頻率順序列出與“選定”品牌具有相同交易 ID 的前 10 個品牌。我最初從下面的第一個查詢開始,該查詢包含由 2 列組成的小樣本數據的單個表
(txn_id, brand)
。我現在的目標/意圖是用實際數據實現這一點,這些數據被分成 2 個表,
1_txns
並且2_products
, 有一個共同的欄位(sku)
。查詢 #1:查詢 1 個表,返回所需的結果。(共享交易 ID 的前 10 個品牌)
:brand
SELECT brand FROM transactions WHERE id IN (SELECT id FROM transactions WHERE brand = :brand) AND brand <> :brand GROUP BY brand ORDER BY COUNT(*) DESC LIMIT 10;
我嘗試修改現有查詢以使用實際數據,結果返回 0 行。我使用了 EXPLAIN,並註意到了一個 Impossible WHERE。顯然我絕不是專家,這實際上是我第一次使用 MySQL 處理連接和過濾器的子查詢。如果我能掌握這樣的事情,那麼我會考慮將我的一些 excel-> 訪問解決方案轉移到基於 Web 的。提前謝謝了
SELECT `2_products`.`brand` FROM `2_products` RIGHT JOIN `1_txns` ON `2_products`.`sku`=`1_txns`.`sku` WHERE `1_txns`.`txn_id` IN (SELECT `1_txns`.`txn_id` FROM `1_txns` WHERE `2_products`.`brand` = :brand) AND `2_products`.`brand` <> :brand GROUP BY `2_products`.`brand` ORDER BY COUNT(*) DESC LIMIT 10;
編輯:對於德里克·唐尼
純英文。此查詢應該返回使用所選品牌購買的前 10 個品牌的列表。數據如下: 1_txns
(txn_id, sku, salesamount, various other columns like qty etc) 1, 12345, 5 1, 12346, 10 2, 12345, 5 2, 12347, 10 3, 12345, 15 3, 12346, 30 4, 12346, 20 4, 12347, 10
2_產品
(sku, brand, various other columns) 12345, Nike 12346, Adidas 12347, Reebok
所需的輸出是:
If Nike is the selected brand Adidas Reebok If Adidas is the selected brand Nike Reebok If Reebok is the selected brand Something that will deal with a tie and still list both in alphabetical order
此查詢應該返回使用所選品牌購買的前 10 個品牌(所選品牌除外)的列表。
嘗試這個:
SELECT `2_products`.`brand`, COUNT(*) as numOrders FROM `2_products` INNER JOIN `1_txns` ON `1_txns`.sku=`2_products`.sku INNER JOIN (SELECT `1_txns`.`txn_id` FROM `1_txns` INNER JOIN `2_products` USING (sku) WHERE brand = :brand) as tmp_txns ON tmp_txns.txn_id=`1_txns`.txn_id WHERE brand <> :brand GROUP BY brand ORDER BY numOrders desc, brand ASC LIMIT 10;