2017-08-04 4 views
-5
SELECT column_1 FROM table_1,table_2; 

データベースでこれを実行したとき、重複するcolumn_1の値を持つ膨大な数の行が返されました。なぜ私はこれらの結果を得たのか理解できませんでした。このクエリが何をしているか説明してください。このSQLクエリは何をしますか? SELECT column_1 FROM table_1、table_2;

+0

は、join条件なしでtable1、table2からcolumn_1を選択します。あなたは 'where table1.id = table2.id'のような条件を追加する必要があります – RealCheeseLord

+0

おそらく少しの努力です。サンプルデータはありません。予想される結果はありません。任意のdbmsタグ付けなど – jarlh

+0

今日のヒント:現代的で明示的な 'JOIN'構文に切り替えます。 (エラーなしで)書きやすく、読みやすく(維持しやすい)、必要に応じて外部結合に変換する方が簡単です。 – jarlh

答えて

2

からcross productを与え、それが表Aの各レコードのために、あなたは表B(すべての可能な組み合わせ)からすべてのレコードを取得することを意味します。 3つのレコードをレコード3および表Bと

テーブルAは、結果9つの合計レコードを与える:

しばしば自身が生成する手段であるデカルトクエリ(たとえば、リストのための基礎として使用
TableA-1/B-1 
TableA-1/B-2 
TableA-1/B-3 
TableA-2/B-1 
TableA-2/B-2 
TableA-2/B-3 
TableA-3/B-1 
TableA-3/B-2 
TableA-3/B-3 

再発スケジュールに基づく将来の日付の数:次の6ヶ月間のすべての可能な結果を​​与え、その曜日が一致するものに限定してください)

4

それはあなたに多くの素人の面では表1と表2

+0

これをどのように使用しますか。あなたは例を挙げることができますか? – serbia99

+0

@ serbia99わかりません。私はそれを必要としなかった – Jens

+0

Dymengの​​答えを見てください。 – Learning

0

これは2つのテーブルをクロス結合する '有効な'方法です;しかし、それは好ましい方法ではありません。 Cross Joinがはるかに明確になります。 on条件は、結果を制限するのに役立ちます。

+0

これは、クロスジョインを行う別の方法です。ありがとう。 – serbia99

0

私はJhon、Ana、Nickという3人の友達がいるとします。それから私は他のテーブル2に赤と黄色のTシャツがあり、私は魔女がいることを知りたい。クエリ中のSO

にtableAさ:友達とテーブルB:Tシャツを返します:

1|JHON | t-shirt_YELLOW 
2|JHON | t-shirt_RED 
3|ANA | t-shirt_YELLOW 
4|ANA | t-shirt_RED 
5|NICK | t-shirt_YELLOW 
6|NICK | t-shirt_RED 

あなたがこれを見たように、すべてのかのう組み合わせがあなたに何を生成し評価することによってので、友人とTシャツの間には関係のロジックを持っていない参加します重複を呼び出す。

関連する問題