[解決済み] IDを使用して複数のSQLテーブルを結合するにはどうすればよいですか?
2022-05-08 02:29:10
質問
4つの異なるテーブルがあり、結合したいのですが。テーブルは以下のようなカラムで構成されています。
TableA - aID | nameA | dID
TableB - bID | nameB | cID | aID
TableC - cID | nameC | date
TableD - dID | nameD
テーブルAから始めて、bがこれらのテーブルの主キーを持っているので、bを使用してテーブルaとcをJOINする方法を理解しています。テーブルAに対してテーブルDをJOINできるようにしたいのですが。以下は、最初にテーブルAとBを結合し、次にそれをCに結合する私のSQLステートメントです。
SELECT TableA.*, TableB.*, TableC.* FROM (TableB INNER JOIN TableA
ON TableB.aID= TableA.aID)
INNER JOIN TableC ON(TableB.cID= Tablec.cID)
WHERE (DATE(TableC.date)=date(now()))
Dを含めるために別の結合を追加しようとすると、'TableD'が不明であるというエラーが発生します。
SELECT TableA.*, TableB.*, TableC.*, TableD.* FROM (TableB INNER JOIN TableA
ON TableB.aID= TableA.aID)
INNER JOIN TableC ON(TableB.cID= Tablec.cID)
INNER JOIN TableA ta ON(ta.dID= TableD.dID)
WHERE (DATE(TableC.date)=date(now()))
解決方法は?
もっとこうして欲しい。
SELECT TableA.*, TableB.*, TableC.*, TableD.*
FROM TableA
JOIN TableB
ON TableB.aID = TableA.aID
JOIN TableC
ON TableC.cID = TableB.cID
JOIN TableD
ON TableD.dID = TableA.dID
WHERE DATE(TableC.date)=date(now())
あなたの例では、実際には
TableD
. 先ほどと同じように、もう一度結合を実行すればよいのです。
注:多くの括弧を削除したことにお気づきでしょう。括弧はほとんどの場合不要であり、コードを読むときに混乱を招くだけだからです。適切なネストは、コードを読みやすくし、分離するための最良の方法です。
関連
-
[解決済み] SQL ServerでSELECTからUPDATEする方法とは?
-
[解決済み] PHPでSQLインジェクションを防ぐにはどうしたらいいですか?
-
[解決済み] MySQLでコマンドラインを使用してSQLファイルをインポートするにはどうすればよいですか?
-
[解決済み] SQL Server で複数行のテキストを 1 つのテキスト文字列に連結する方法
-
[解決済み] SQL ServerでJOINを使用してUPDATE文を実行するにはどうすればよいですか?
-
[解決済み] MySQLテーブルへの挿入または存在する場合の更新
-
[解決済み] T-SQLです。結合で削除する行を選択する
-
[解決済み] 3つのテーブルを持つSQL Inner-join?
-
[解決済み】「INNER JOIN」と「OUTER JOIN」の違いは何ですか?
-
[解決済み] SQL ServerでINNER JOINを使用して削除するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
MySQL Innodb インデックスメカニズム詳細解説
-
MySqlの整数インデックスと文字列インデックスの失敗または暗黙の変換問題
-
MySQLにおけるorder byの使用方法の詳細
-
MySQL サービスとデータベース管理
-
面接では選択式で聞かれましたが......。.for updateはテーブルをロックするか、行をロックするか?
-
MySQLインストールチュートリアル(Linux版
-
mysqlインデックスが長すぎる特殊なキーが長すぎる解決策
-
[解決済み] [GROUP BY句に含まれるか、集約関数で使用される必要があります。
-
[解決済み】マルチパート識別子をバインドできない
-
[解決済み】SQLサーバーのテンポラリーテーブルで「すでに名前のついたオブジェクトがあります」エラーが発生する。