难以从4个表中获取数据

时间:2013-04-26 07:03:23

标签: php mysql

我的数据库中有四个表 - 一个叫做kursplan,第二个表是kursplan_kurse,第三个表是kursplan_kursraum第四个表是kursplan_trainer。

第一个表格结构:id,club_id,Tag,Kurse_namen,from,to,Kursleiter,kursraum

这里club_id在我的用户表中表示我的用户ID

id     |   club_id         |    Tag      |Kurse_namen  | Kursleiter| kursraum
____________________________________________________________________________________________
1      |         35         |     Monday |2           |2           | 4
2      |         35         |     tue    |3           |3           | 3
3      |         35         |    wen     |3           |3           | 3 
4      |         12         |    thu     |1           |2           | 4

第二个表格结构:表格名称[kursplan_kurse]

id     |    club_id    | Kurse_namen    
______________________________________
1      |         35       |     Kurse1
2      |         35       |     Kurse2
3      |        35        |     Kurse3
4      |         35       |    Kurse4

第3表结构:表名[kursplan_kursraum]

id     |    club_id    | kursraum   
______________________________________
1      |         35        |     kursraum1
2      |         35         |    kursraum2
3      |        35         |     kursraum3
4      |         35       |    kursraum4

第四表结构:表名[kursplan_trainer]

id     |    club_id    | Kursleiter 
______________________________________
1      |         35        |     Kursleiter1
2      |         35         |    Kursleiter2
3      |        35         |    Kursleiter3
4      |         35       |  Kursleiter4

我的选择查询是

$query = "SELECT * FROM `kursplan` WHERE `club_id` = '35' AND `Tag` = 'Monday' ";

我正在以这种格式提交结果

Kurse_namen | kursraum  |Kursleiter |
=====================================
2           | 4        |2          |

现在,我想要实现的是为所有3个表中的get值设置JOIN查询 这是第二,第三,第四桌

我需要这种格式的结果我的意思而不是数字我想要名字

Kurse_namen    |   kursraum       | Kursleiter     
______________________________________________
Kurse2     |   kursraum4  |    Kursleiter2

请帮帮我。

5 个答案:

答案 0 :(得分:2)

虽然你的问题不清楚,如果你与联接有关,你可以通过这个sql来理解它。

    select t2.Kurse_namen,t3.kursraum,t4.Kursleiter
    from table2 t2,table3 t3,table4 t4,table1 t1
    where t2.club_id=t3.club_id
    and t3.club_id=t4.club_id
    and t1.club_id=t2.club_id
    and t2.club_id=35
    and t1.tag='Monday'

答案 1 :(得分:1)

使用左连接,例如

SELECT `TABLE2 NAME`.`FIELd NAME`, `TABLE3 NAME`.`FIELD NAME` , `TABLE4 NAME`.`FIELD NAME`
        FROM `TABLE NAME` 
        LEFT JOIN `TABLE2` 
            ON `TABLE2`.`FIELD(UNIQUE DATA EXAMPLE ID)` = `TABLE3`.`FIELD(UNIQUE DATA EXAMPLE ID)` `TABLE4 NAME`.`FIELD NAME(UNIQUE DATA EXAMPLE ID)`

答案 2 :(得分:0)

$query = "SELECT `b`.`Kurse_namen`, `c`.`kursraum`, `d`.`Kursleiter`, 
FROM `kursplan` as `a`
JOIN `kursplan_kurse` as `b` ON `b`.`id` = `a`.`Kurse_namen`
JOIN `kursplan_kursraum` as `c` ON `c`.`id` = `a`.`kursraum`
JOIN `kursplan_trainer` as `f` ON `f`.`id` = `a`.`Kursleiter`
WHERE `a`.`club_id` = '35' AND `a`.`Tag` = 'Monday'";

答案 3 :(得分:0)

我认为你必须做INNER JOIN s

这可能有效: ($query =

SELECT kursplan_kurse.Kurse_namen, kursplan_kursraum.kursraum,
kursplan_trainer.Kursleiter FROM `kursplan` 
INNER JOIN kursplan 
INNER JOIN kursplan_kursraum
INNER JOIN kursplan_trainer 
USING(club_id) WHERE `club_id` = '35' AND `Tag` = 'Monday'

答案 4 :(得分:0)

以下查询将输出您需要的数据:

SELECT kk.Kurse_Namen, kr.kursraum, kt.kursleiter FROM kursplan k
LEFT OUTER JOIN kursplan_kurse kk (k.Kurse_namen = kk.id)
LEFT OUTER JOIN kursplan_kursraum kr (k.kursraum = kr.id)
LEFT OUTER JOIN kursplan_trainer kt (k.Kursleiter = kt.id)
WHERE k.club_id = 35
AND Tag = "Monday"