3

我的数据库中有四个表 - 一个称为 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

第三张表结构:表名[kursplan_kursraum]

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

第4个表结构:表名[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          |

现在,我想要实现的是设置一个 JOIN 查询以从所有 3 个表中获取值,这些表是第 2、3、4 个表

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

Kurse_namen    |   kursraum       | Kursleiter     
______________________________________________
Kurse2     |   kursraum4  |    Kursleiter2

请帮我。

4

5 回答 5

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'
于 2013-04-26T07:19:26.390 回答
1

对 ex 使用左连接。

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)`
于 2013-04-26T07:18:45.683 回答
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'";
于 2013-04-26T07:17:58.167 回答
0

INNER JOIN我认为你必须这样做

这可能是可行的:($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'
于 2013-04-26T07:18:37.357 回答
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"
于 2013-04-26T07:24:13.367 回答