2017-01-13 12 views
1

私は2つのmysqlテーブルを持っています。そして、基本的に1つのSQLクエリ内で結合したい2つのクエリ(各テーブルに1つ)があります。それは簡単な(内部結合のような)のようなものだと思われるが、内部結合は、テーブル2から非ユニークな値を私の結果配列に複製する...私はそれらを複製したくない...私はテーブル/クエリ2からそれらの複製をしたいにはの結果レコード1SQL(mysql)サブクエリの結果を別のサブクエリに追加します

クエリ1テーブル1のレコードを取得します。結果は一意です。 (1つのIDは1つのレコードを返します)IDは自分の条件の1つと等しいレコードのすべてのフィールドを返すだけです。 [複数のORの代わりにINを使用している]

$sid = "'M-179','M-242','M-231','Q-2thru5'" ; 
$query = "SELECT * FROM table1 WHERE IN ($sid)` 

クエリ2はテーブル2のレコードを取得しますが、結果は一意ではありません。 1つのIDは多くのレコードを返すことができます。

$query2 = "SELECT extra_data, pub_url FROM table2 WHERE IN ($sid)"; 

は、だから、僕は、クエリ1の結果の最後に平手打ちALL返されたレコードから各extra_data & pub_urlフィールドをしたいです。私は意味がありますか?だから、結果は次のようになります...あなたは結果を組み合わせることにより、

[0] => Array 
     (
      * all my returned fields from the 
      record returned by query 1 here 
      $row['extra_data'] 
      $row['pub_url'] <-returned record from query 2 
      $row['extra_data'] 
      $row['pub_url'] <-another returned record from query 2 
      $row['extra_data'] 
      $row['pub_url'] <-any another returned 
           record from query 2, etc.. 
     ) 

答えて

0

何を意味するのですか?

query2の結果を同じ 関連する行に表示するだけで、余分な列を表示するか、 を新しい行として表示しますか?

最初のケースでは、JOINを使用する必要があります。

しかし、あなたがしたいことが第2の ケースであると感じています。この場合、UNIONを使用する必要があります。ただし、 では、この場合、2つのクエリの列が一致しなければならないことに注意してください。だから、 2つのクエリの労働組合は、次のようになります。

-- pseudo code only 
SELECT extra_data, pub_url FROM table1 WHERE IN ($sid) 
union 
SELECT extra_data, pub_url FROM table2 WHERE IN ($sid) 
+0

はい、最初のケースです。二番目ではありません。私はテーブル2の2番目のサブクエリの結果を余分な列と同じ関連する行に表示したいと思います.....それは最初のテーブルの結果にextra_data2、pub_url2、extra_data3、pub_url3、extra_data4、pub_url4を追加するようなものです... (しかし、私が述べたように、JOINとINNER JOINは動作しませんでした。なぜなら、table2の結果ごとに表1の結果を複製したからです... – lance

+0

各 'sid'に対して、' table1'と 'table2 '? – leeyuiwah

+0

いいえ...テーブル1の一致する.sid行ごとに、2つまたは3つ以上の.sidテーブル2の一致する行が存在する可能性があります。したがって、私の問題です。テーブル2には3つの一致する行があります...テーブルの行に列と列の結果を追加します – lance

0

は、SID値を含む列の表2に表1の結果を結合することになる、これに似た何かを試してみてください。

SELECT a.*, b.extra_data, pub_url 
FROM table1 a 
left outer join table2 b on a.sid = b.sid 
WHERE a.sid IN ($sid) 
関連する問題