2017-05-17 16 views
-4

最初の投稿、穏やか!私のSQL知識は最高で平均です。MySQL:関係のない複数のテーブルから選択する

私はお互いに直接関係のない2つのテーブルを持っています。

  • TableAの列を持つ( "CustomerWishList") "bookID"、他の書籍データ、 などなどなど
  • テーブルB( "CustomerOwned")の列を持つ - "bookID"、他の書籍データ、その他など

書籍は、これらの表の1つ、両方、またはいずれの表にもありません。

"bookID='data'"オカレンスの数をカウントするSQLステートメントをTableAまたはTableBに作成する必要があります。

これまでのところ、私は最初にTableAの"bookID"列を検索し、何も見つからなかった場合は、その後、次のTableBの"bookID"列を検索していますPHPを使用して...それは動作しますが、非効率的で、より良い方法がなければならない確信しています。

ここにJOINのステートメントは適用されないようですか? - 私は間違っている可能性があります。クエリ以下

$total=SELECT COUNT(*) FROM CustomerWishList WHERE BOOKID=1234 

if ($total==0) { 
    $total2=SELECT COUNT(*) FROM CustomerOwned WHERE BOOKID=1234 
} 
return $total2; 
+3

あなたは助けるかもしれない、ここで言及したPHPコードを投稿するだけで、テーブルBであるDS。 – cybermonkey

+0

共通のbookIDは関係です。あなたが試したことを実際に試してみたわけではないので、私たちが本当にやることができるのはあなたにいくつかの提案を与えることです:あなたは、COUNT IFまたはCASEで望みを達成することができます。 – user3741598

+2

[**最小限の完成度の高い検証可能なサンプルを作成する方法**](http://stackoverflow.com/help/mcve) –

答えて

0

を表AにのみあるブックIDのカウントあなたを与えるだろう:

SELECT count(1) as `count` 
FROM tableA 
WHERE NOT EXISTS 
(SELECT bookID FROM tableB WHERE bookID = tableA.bookID); 

私は現在使用している擬PHPコードを更新し


同様に、次のクエリを実行すると、書籍i

SELECT count(1) as `count` 
FROM tableB 
WHERE NOT EXISTS 
(SELECT bookID FROM tableA WHERE bookID = tableB.bookID); 

さて、あなたはaddにこれら二つは、あなたが次のクエリを使用することができますしたい場合:

SELECT `a.count` + `b.count` 
FROM ( 
SELECT count(1) as `count` 
FROM tableA 
WHERE NOT EXISTS 
    (SELECT bookID FROM tableB WHERE bookID = tableA.bookID) 
) a, 
(
SELECT count(1) as `count` 
FROM tableB 
WHERE NOT EXISTS 
    (SELECT bookID FROM tableA WHERE bookID = tableB.bookID); 
) b; 
関連する問題