2つのテーブルからデータを抽出することについて以前に質問し、完全に機能する美しい回答を得ました。2つのテーブルからデータを抽出することについて以前に質問し、完全に機能する美しい回答を得ました
これは、WHERE を追加して最初のテーブルから特定のデータを取得したいという新しい状況ですが、今では失敗し、そうすべきではないようです
このクエリは、この関数を実行するときに問題なく実行されます
table 1 table 2
product 1 product 4
product 2 product 2
product 3
product 4
SELECT ifnull( b.number >0, 0 ) purchased
FROM 1androidProducts a
LEFT JOIN (
SELECT count( * ) number, product
FROM 1androidSales
WHERE udid = ''
GROUP BY product
) b
ON a.appTitle = b.product
ORDER BY a.appTitle
LIMIT 0 , 30
この結果が得られます
result
0
1
0
1
つまり、表1のすべての項目がこれを示しています
table-1-item が表 2 に表示されない場合は 0 --OR-- table-1-item が表 2 に表示される場合は 1
今、この行を追加すると
SELECT ifnull( b.number >0, 0 ) purchased
FROM 1androidProducts a
WHERE a.accountID = 2 <<---------- I added this line
LEFT JOIN (
SELECT count( * ) number, product
FROM 1androidSales
WHERE udid = ''
AND accountID = 2 <<---------- I added this line
GROUP BY product
) b
ON a.appTitle = b.product
ORDER BY a.appTitle
LIMIT 0 , 30
エラーが発生するようになりました
1064 - SQL 構文にエラーがあります。4 行目の 'LEFT JOIN ( SELECT count( * ) number, product FROM 1androidSales ' の近くで使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。
accountID に基づいてテーブル 1 のサブセットを取得し、2 番目のテーブルと比較したいだけです。
だからもし私がこれを持っていたら
table 1 table 2
accountid =1 product 1 accountid =2 product 4
accountid =1 product 2 accountid =2 product 2
accountid =1 product 3 accountid =2 product 5
accountid =1 product 4
accountid =2 product 1
accountid =2 product 2
accountid =2 product 3
accountid =2 product 4
accountid =2 product 5
この結果が得られます
result
0
1
0
1
1
したがって、結果レコードの総数は、テーブル 1 の accountID 値 2 を満たすレコードの数と一致します。
これは簡単に変更できると思っていましたが、かなり面倒です
御時間ありがとうございます