私はcourseID、studentNameのテーブルを持っていて、もう1つのテーブルはcourseIDです、studentNameは学生名の学生テーブルのコース名を検索します what sql syntax私は使うべきですか?参加または内側のあなたはこの試みることができるのMySQLで私は別のテーブルのID FKとvarcharを比較できます
答えて
に参加:
select a.studentName,b.courseName
from tbl_name a
inner join tbl_name b
on a.courseID = b.courseID
このコードにはエイリアステーブルがあるため、選択した列にその名前が指定されていないため、エラーになります。 –
はいエイリアス名を追加するのを忘れていました。ありがとうございました。 –
あなたがJOIN
を使用して、制約(例えばon a.courseId = b.courseId
)を指定した場合は、INNER JOIN
を使用するかのように、それはまったく同じであるので、あなたがあなたのテーブル構造に応じて以下のような何かをする必要があります。
select * from studentTable
inner join courseTable
on studentTable.courseID = courseTable.courseID
where studentTable.studentName = 'Jack Black';
のMySQLで
あなたも書くことができ
select * from studentTable, courseTable
where studentTable.courseID = courseTable.courseID
and studentName = 'Jack Black';
と同じ方法で内部的に照会されます。
のための正確な構文を確認するには、ここに参加する:あなたは、このようなすべてのコースと一緒に選択し、すべての生徒の名前として、参加した結果を探しているとき、あなたは参加http://dev.mysql.com/doc/refman/5.7/en/join.html
カンマ区切りの結合を使用するのはまだ(冗長化してから20年以上)*可能ですが、初心者には使用を推奨しません。 –
しかし、この種の構文を使用する可能性があることを知っておく必要があります。 –
を。例えば:
select s.studentname, c.coursename
from course c
join student_takes_course s on s.courseid = c.courseid;
または(テーブルの順序は重要ではありませんように):
select s.studentname, c.coursename
from student_takes_course s
join course c on s.courseid = c.courseid;
JOIN
がINNER JOIN
のためだけ短いです。いずれかを使用することができます。
ただし、参加した結果に興味がない場合は、参加しないことをおすすめします。たとえば、あなたの例のように、コーステーブルからコース名を表示するだけの場合などです。その後、通常IN
またはEXISTS
を使用します。
select coursename
from course
where courseid in
(
select courseid
from student_takes_course
where studentname = 'Joe'
);
または
select c.coursename
from course c
where exists
(
select *
from student_takes_course s
where s.studentname = 'Joe'
and s.courseid = c.courseid
);
を(私は彼らの簡略化のためEXISTS
句の上にIN
句を好むし、可能な場合はそれらを使用しています。)
- 1. MySQL varcharとIBM DB2 varchar dataypeの比較
- 2. 他のテーブルのテーブルとcharフィールドのvarcharフィールドを比較できます
- 3. MYSQLの日付varchar形式を比較
- 4. MySQLのCOUNT(ID)とCOUNT(*)の比較
- 5. MySQL:テーブルとビューとルーチンとの比較
- 6. ユーザーIDとテーブルの比較asp.net
- 7. mysqlデータベースのテーブルとの比較
- 8. MySQLテーブルとログファイルのデータの比較
- 9. MySQLで比較するとintにvarcharまたはvarcharに変換する方が速いですか?
- 10. 大きなMySQLテーブルを比較する
- 11. QStringとの比較(varchar、nvarchar2、varchar2)
- 12. 2つのMYSQLテーブルの列を比較
- 13. あるテーブル内のデータセットを別のテーブルと比較する
- 14. MySQLの比較と '%'
- 15. MySQL 1つのテーブルと複数のテーブルの比較
- 16. mysqlのテーブルと日付を比較するには?
- 17. SQL VarcharフィールドとSQLを比較
- 18. MySQLの選択:WHERE(時間)=テーブル値とテーブル値の比較
- 19. $ match(aggregation)は2つのオブジェクトIDを比較できません
- 20. MysqlはテーブルのIPアドレスを比較します
- 21. 共通IDに基づいてMySQLの2つのテーブルを比較する
- 22. テーブルMYSQLの行と出力の差を比較する
- 23. STIとMTIの違いと別のテーブルとの比較
- 24. 複数のテーブルをmysqlで比較する
- 25. Laravelでテーブルの列の値をAuth :: user-> idと比較する方法
- 26. のMySQL:比較
- 27. VARCHARと他のものを速く比較する方法
- 28. varchar形式の日付比較
- 29. MySQL:追加のid列とパフォーマンスの比較
- 30. テーブルの比較
'JOIN'だけですINNER JOINの略語なので、違いはありません。それでは、クエリーは何をすべきでしょうか?ユーザーが学生名とコース名を入力し、その学生がコースを受講するかどうかによって「はい」または「いいえ」と表示されますか?または、ユーザーが学生の名前を入力し、すべてのコースを取得しますか?まだ何か他の?両方のテーブルからデータを選択する場合は、参加する方法があります。ただし、1つの表のデータのみを表示する場合は、exists句を指定した問合せが適している可能性があります。 –
ユーザーが学生の名前を入力し、すべてのコースを取得します – uglyduck