2012-02-11 12 views
-2

このクエリは機能しません。私はLEFT JOINから何かが何かあるすべての結果を欲しいです。 200は、テーブル間のリンク変数であるMySQL Left JoinからALLを選択

SELECT * FROM `swarovski_zones` WHERE `siteid`='200' 
LEFT JOIN `trafficviews` ON `swarovski`.`id`=`trafficviews`.`adid` 

swarovski_zones表がある200

trafficviews表はADID 200

ですサイトID:これは私の正確なコードです。私はIDが200

+0

「動作しません」>。< –

+0

シンクショックエラー以外にも意味エラーがあります。あなたは 'idが200である左のテーブルからすべてを得ているだけです '。 IDが200の両方のテーブルからすべてを取得するには外部結合が必要です –

+0

id **が 'swarovski_zones'に存在しない可能性があり、' trafficviews'にのみ存在する可能性がある場合は、私の答えを受け入れないようにしてくださいそのシナリオで正しいものを持っている@ MostyMostachoを受け入れてください。 – Ben

答えて

6

に参加している両方のテーブルからすべてをしたいです。それは次のようになります。

あなたを与える
select 
from 
join 
on 
where 
group by 
having 
order by 
limit 

もなく文字列の整数であることを siteidを意味する
select * 
    from `swarovski_zones` 
    left join `trafficviews` 
    on `swarovski`.`id` = `trafficviews`.`adid` 
where `siteid` = '200' 

を?

私はおそらく

Limit ...上記のリストを提供後悔するつもりです!私は忘れたLimit;完全な構文リストはhere

+0

ありがとう、私のテーブルでは私のテーブルでは、私は2つのフィールド "ID"を参照してください彼らは同じテーブルを自動生成された主キーのID .. .. – TheBlackBenzKid

+0

Thw 'JOIN'と' ON'は 'FROM'節の一部です。'WHERE'節(または' HAVING'や...)に現れる 'AND'や' OR'とよく似ています。 –

+1

@ypercubeと言ったように、私はリストを提供することを後悔するつもりです:-)。 OPに何か問題があったときには、「参加」を逃すのはかなり無意味に思えました。 – Ben

1

ユーザー完全外部構文が正しくないため、クエリは動作しません

SELECT * FROM `swarovski_zones` WHERE `siteid`='200' 
FULL OUTER JOIN `trafficviews` ON `swarovski`.`id`=`trafficviews`.`adid` 
+1

MySQLにはFULL OUTER JOINはありません。これは問合せの問題ではありません。 –

+0

http://www.xaprb.com/blog/2006/05/26/how-to-write-full-outer-join-in-mysql/ –

+0

その記事のどこにも書かれていない「完全外部結合」 selectステートメント – Ben

1

です。ここでの問題は、あなたの右側のテーブル(trafficviews)の要素に、左側のテーブル(swarovski_zones)に対応する行がない可能性があることです。したがって、左の結合は左からすべての要素を取得し、右からいくつかの要素を除外することがあります。

これを解決するには、外部結合が必要です。

SELECT * FROM swarovski_zones s 
LEFT JOIN trafficviews ON s.id = t.adid 
UNION ALL 
SELECT * FROM swarovski_zones s 
RIGHT JOIN trafficviews ON s.id = t.adid WHERE s.id IS NULL 
WHERE s.siteid = 200 or t.adid = 200 

それを試してみる:このようなものでなければなりませんあなたの質問に

SELECT * FROM a LEFT JOIN b ON a.id = b.id 
UNION ALL 
SELECT * FROM a RIGHT JOIN b ON a.id = b.id WHERE a.id IS NULL; 

応用:あなたの問題は、MySQLは、外側にはこれは、次の一般的な方法で解決された:)加入をサポートしていないことです。

+0

ありがとうございました。 – TheBlackBenzKid