2017-07-17 2 views
-1

2つのテーブルがあり、1つは2つのカラム(古いものと新しいもの)をマッピングする必要があり、もう1つは対応する製品IDを含むすべての製品情報を持つテーブルです。私は、製品が正しく照合されているかどうかを確認するためにクエリを実行しようとしています。返された結果は、古いIDとnewidを完全な製品情報とともに表示する必要があります。MySQLテーブル複数の値を結合する

私が使用している他のいくつかのクエリから、私が一緒に盛り込んだものですが、正しく二重結合をしているかどうかはわかりません。

SELECT `VinylOld2New`.`Old ID`, `asi_VinylOld2New`.`New ID`, old.`title`, new.`title`, old.`number`, new.`number`, old.`image`, new.`image`, old.`added`, new.`added` 
FROM `ii_Product` old, `ii_Product` new 
INNER JOIN `VinylOld2New` ON 
old.`id` = `VinylOld2New`.`Old ID` OR new.`id` = `VinylOld2New`.`New ID` 
+0

テーブルのデータと予想される結果を入力してください。 – user3741598

+0

スキーマとはなんですか?どんなフィールドに参加する必要がありますか?出力はどのように見えますか? – Jacobm001

+2

'、' notationまたは 'inner join' ...を両方とも使用しないでください。言い換えれば、標準を選ぶ。好ましくはINNER Join構文バージョン(より新しい)また、Newと "OLD"はどのように関連していますか? from節のテーブルではない 'asi_VinylOld2New'は何ですか... – xQbert

答えて

1
  1. 標準を選択します。両方ともINNER JOINまたは,の表記を使用してください。 (より新しい標準が望ましい)
  2. ここにどのようにデータを結合したいか分かりません。 ORの使用は、vinylOld2Newのすべてのレコードと、ii_product(古いものか新しいもの)に一致するものだけが欲しいということを暗示しているようですが、それは推測です。
  3. 選択の2番目の列は、asi_VinylOld2Newを示します。 New IDがありますが、そのようなテーブルはありません。選択したテーブルが間違っているか、またはfromのテーブルが間違っていますか?

SELECT `VinylOld2New`.`Old ID` 
    , `VinylOld2New`.`New ID` 
    , old.`title` 
    , new.`title` 
    , old.`number` 
    , new.`number` 
    , old.`image` 
    , new.`image` 
    , old.`added` 
    , new.`added` 
FROM `VinylOld2New` 
LEFT JOIN `ii_Product` old 
    ON old.`id` = `VinylOld2New`.`Old ID` 
LEFT JOIN `ii_Product` new 
    ON new.`id` = `VinylOld2New`.`New ID` 
+0

これは完全に機能しました。ありがとう。今私はそれを見て、私がどこにいたのか理解しています。 – EricImprint

+1

あなたは、左の結合の代わりに完全な外側の結合を使用し、新しい/古いタイトルがない場合でもすべてのレコードを見ることができます...私はあなたが何をしているのか分かりません。注意:外部結合を使用する場合は、where句に注意してください。すべてのレコードを持たないテーブルでそれらを使用すると、外部結合が無効になり、内部結合のように動作します。 – xQbert

関連する問題