0

私はこれらの3つのテーブルを持っています:

田畑

- id
- field

学生

- id
- name
- birthday
- location
- ...

学生フィールド

- id
- student_id
- field_id

テーブルstudent_fieldsのすべてのフィールドを使用して、条件に従ってデータベースからすべての学生をロードしたいのですが、どうすればよいですか? 今まで、私は単純なローディング学生を持っています:

//$s = "SELECT * FROM students JOIN WHERE name LIKE '%$search%'";
//$students = mysql_query($s);

編集:例:テーブルフィールドには次が含まれます:

id | field
1  | Citizenship
2  | Geography
3  | History
4  | Languages
5  | Literacy
6  | Music
7  | Numeracy

それぞれの生徒のテーブルstudent_fieldsには次が含まれます。

id | student_id | field_id
1  | 1          | 6
2  | 1          | 7 
3  | 1          | 3
4  | 2          | 7

目標: ID 1の学生のために、彼のフィールド(この場合はMusicNumeracy 、 History ) を出力したい考えてます。

君たちありがとう

4

2 に答える 2

0

あなたのクエリはあなたの質問を満たしておらず、詳細情報を提供していませんが、このクエリを試すことができます

   SELECT * FROM fields f 
   INNER JOIN student_fields sf
   ON sf.field_id = f.id 
   INNER JOIN students s
   ON  s.id = sf.student_id
   WHERE s.name LIKE '%$search%'

EDIT または使用できますgroup_concat

そのように

SELECT s.id ,s.name ,s.birthday,s.birthday ,s.location,group_concat(f.field) field 
FROM fields f 
INNER JOIN student_fields sf
ON sf.field_id = f.id 
INNER JOIN students s
ON  s.id = sf.student_id
WHERE s.name LIKE '%$search%'

デモ SQL フィドル

于 2013-01-05T13:14:04.010 に答える
0

あなたが書いているクエリは無効です。(条件を使用して) テーブルから選択するには、SQL は次のようになります。

SELECT FROM students WHERE id > 10 AND age > 18

また、PDO または Mysqli ステートメントに移行することをお勧めします。これは、PHP 5.5 の時点で、PHP は mysql 関数を廃止するためです。

于 2013-01-05T13:06:13.583 に答える