2016-11-17 20 views
1

私はMYSQLデータベースに無関係な2つのテーブルを持っています。私はそれらの両方からデータを選択して表示したいと思います。関係のない2つのテーブルのデータを表示するにはどうすればよいですか?

例として、テーブルは次のようになります。 results table

ID各テーブルから使用されています。これは同じよう separate tables

私は、アルファベット順に整理、自分のサイト上で結果を表示したいと思います猫や犬の写真を参照する。私はJOINステートメントで多くの運がなかった、このシナリオでのUNIONの作業ですか?

ご迷惑をおかけして申し訳ございません。

+0

'join'が必要です。あなたの質問を編集し、あなたが試した 'join'ステートメントを追加してください。 – randominstanceOfLivingThing

+1

@randominstanceOfLivingThingここには何も関係がありません。 –

+2

@randominstanceOfLivingThing無関係なテーブルにどのように参加できますか? –

答えて

3
SELECT Alpha, Name, CONVERT(Cat_Id, CHAR(50)) AS Cat_Id, '' AS Dog_Id 
FROM Cat 
UNION ALL 
SELECT Alpha, Name, '' AS Cat_Id, CONVERT(Dog_Id, CHAR(50)) AS Dog_Id 
FROM Dog 
ORDER BY Alpha 

いくつかのコメント:私たちは、猫や犬のIDを行方不明に空の文字列を表示したい場合は

は、厳密に言えば、我々はすべてのため、 CHARCat_Idまたは Dog_Id列をキャストする必要があります列内の値は同じ型である必要があります。

むしろ私たちは最後にORDER BYを追加することができ、Alpha列によってORDER BYとソートを使用するようにUNIONクエリをラップする必要はありません。

+0

これはうまくいきました。両方のテーブルに他の列があるので、私はUNION ALLの代わりにUNIONを使用しました。私はそのような価値観をキャストしていることに気付かず、多くのありがとう。 – sol

+1

@ovokuro私は、MySQLではキャストなしで逃げることができると信じています。しかし、SQL Serverなどの他のより厳密なデータベースでは許可されていない可能性があります。 –

+2

Tim Biegeleisen氏は、キャストを使うことは良い習慣になると述べています。 @ovokuro、UNION ALLを使用すると、mysqlが2つのセットの比較を一意にスキップできます。ユニオンは重複行を削除します。この場合、データが増加すると、UNION Allは長期的にパフォーマンスを改善します。 –

2
SELECT Alpha,Name,Cat_ID,'' as Dog_ID 
FROM Cat 
UNION ALL 
SELECT Alpha,Name,'' as Cat_ID,Dog_ID 
FROM Dog 
1

私はフィールドを使用して一つのテーブルに2つのテーブルを結合します:typeフィールドは、猫や犬のどちらかだろう

ID Type Name Alpha 

あなたが持っているように、その後残りの部分は記入されます。これにより、今後データベースを変更することなく、追加の動物タイプを追加することもできます。それはあなたのデータを表示するとき、単純な選択です。