免責事項:控えめに言っても、私のSQLスキルは基本的です。
同じデータベースの異なるテーブルに2つの類似したデータ型があるとしましょう。
最初のテーブルはハードカバーと呼ばれ、フィールドは次のとおりです。
hbID | hbTitle | hbPublisherID | hbPublishDate
2番目のテーブルはペーパーバックと呼ばれ、そのフィールドは同様のデータを保持しますが、フィールドの名前は異なります。
pbID | pbTitle | pbPublisherID | pbPublishDate
出版社IDが7である最新のハードカバーとペーパーバックの本10冊を取得する必要があります。
これは私がこれまでに持っているものです:
SELECT TOP 10
hbID, hbTitle, hbPublisherID, hbPublishDate AS pDate
bpID, pbTitle, bpPublisherID, pbPublishDate AS pDate
FROM hardback CROSS JOIN paperback
WHERE (hbPublisherID = 7) OR (pbPublisherID = 7)
ORDER BY pDate DESC
これにより、行ごとに7つの列が返され、そのうちの少なくとも3つは、間違った発行元のものである場合とそうでない場合があります。の内容にもよりますが、おそらく4つpDate
ですが、他の6つの列が正しい発行元のものである場合は、ほぼ確実に問題になります。
このソフトウェアの以前のバージョンをリリースするために、それぞれ10レコードをフェッチする2つの個別のクエリを実行し、日付で並べ替えて下位10を破棄しましたが、もっとエレガントな方法があるはずです。
助言がありますか?
余談ですが、Macで突然カーネルパニックが発生したときに、ここに書いた内容を確認していました。再起動してタブを再度開いても、入力した内容はすべてここにあります。StackExchangeサイトは素晴らしいです:)