ホームページ >バックエンド開発 >PHPチュートリアル >2つのテーブル間の関連クエリについてアドバイスをお願いします

2つのテーブル間の関連クエリについてアドバイスをお願いします

WBOY
WBOYオリジナル
2016-06-23 13:47:17981ブラウズ

詳細 ($ ID) {

$ Query = $ this-& gt-& gt; を選択 T1.Gradename, T2.*From Grade as T2 where Studentid = ' $ ID ' t2.gradeid = t1.gradeid ");
return $query->result();
}

2 つのテーブル、student テーブルと Grade テーブルがあります。呼び出しメソッドは、id 変数を渡して、学生の情報をクエリします。指定された学生番号で質問させてください。sudent のすべてのフィールド値と成績名の値をクエリしたいのです。
Student と Grade は外部キーの関係であるため、Student テーブルの GradeID は Grade テーブルの GradeID と同じであり、Gradename は Grade テーブルに格納されます。

ステートメントを間違って書いたので実行できません。助けてください。


ディスカッションへの返信 (解決策)

エラー メッセージは何ですか? SQLは問題を認識しませんでした。 。 。

select s.*, g.gradename from Student as s left join Grade as g on s.gradeid = g.gradeid where s.studentid = $id




エラー メッセージは何ですか? SQLは問題を認識しませんでした。 。 。 10 # #1052-where 句の列 'Studentid' があいまいです

Wander_wind は正しいですが、なぜ間違っていたのかわかりません。 s
where 句の列の Studentid があいまいです。
マルチテーブルクエリでは、カラム名にプレフィックスを付ける必要があります。そうしないと、MySQL はカラム名を明確に区別できません。

select t1.gradename, t2.* from Grade as t1,student as t2 where t1.studentid = '$id' and t2.gradeid = t1.gradeid



ander_wind は正しく書かれていますが、理由がわかりません間違っています
このエラーの最も一般的な理由は、前述のように、テーブルのエイリアスをプレフィックスとして追加することが原因であることです。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。