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的学生,我想打印出他的字段,在本例中为MusicNumeracyHistory

谢谢你们

4

2 回答 2

0

您正在编写的查询无效。要从表中选择(使用条件),SQL 应该是这样的:

SELECT FROM students WHERE id > 10 AND age > 18

另外,我建议您使用 PDO 或 Mysqli 语句,因为从 PHP 5.5 开始,PHP 正在弃用 mysql 函数。

于 2013-01-05T13:06:13.583 回答
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%'

编辑 或者你可以使用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 回答