ホームページ > データベース > mysql チュートリアル > 4 つのテーブルを ID で結合すると、SQL クエリが「TableD が不明」を返すのはなぜですか?

4 つのテーブルを ID で結合すると、SQL クエリが「TableD が不明」を返すのはなぜですか?

Patricia Arquette
リリース: 2025-01-14 06:05:42
オリジナル
709 人が閲覧しました

Why is my SQL query returning

ID を使用した複数の SQL テーブルの接続: 「テーブルが不明です」エラーのトラブルシューティング

このガイドでは、ID を使用して複数の SQL テーブルを結合する際の一般的な問題に対処します。 テーブル A、B、C は正常に結合されましたが、テーブル D を追加すると「テーブル D が不明です」エラーが発生します。このエラーは、SQL クエリ内のテーブル D 参照が正しくないことを示します。 これを解決するには、テーブル D を既存の結合テーブルに正しくリンクする必要があります。

解決策

テーブル D を含めるように修正された SQL ステートメントは次のとおりです。

<code class="language-sql">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) = CURDATE();</code>
ログイン後にコピー

この改良されたクエリでは、TableA をアンカーとして使用します。 TableB を使用して aID を結合し、TableC を使用して cID を結合し、最後に TableD を使用して dID を結合します (dIDTableA の両方に TableD が存在すると仮定します)。 WHERE 句は、TableC.date が現在の日付と一致するエントリのみを含むように結果をフィルター処理します。 CURDATE() の使用に注意してください。date(now()) は、明確さとデータベースの互換性のために、一般に

よりも好まれます。

重要な考慮事項:

  • 明確さ:
  • 読みやすくするために、不必要な括弧は避けてください。
  • 論理構造:
  • 結合が論理的に構造化され、正しくリンクされていることを確認します。 結合に使用された ID が実際に存在し、各テーブルで正しい名前が付けられていることを再確認してください。
  • データベース固有の関数:date(now()) CURDATE() は一部のデータベースで動作しますが、
  • はより標準的で移植可能です。

これらの手順に従い、ID 列の存在と名前を確認すると、4 つのテーブルすべてが正常に結合されます。

以上が4 つのテーブルを ID で結合すると、SQL クエリが「TableD が不明」を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート