mysql多表聯合查詢

2021-09-01 09:01:06 字數 2127 閱讀 5885

我在工作中天天研究zen cart的程式,那個叫人痛苦,最近比較痛苦的是經常碰見mysql多表聯合查詢,多的時候有12個表聯合查詢,zen cart的程式設計師不知道是懶還是技術好,乙個語句完成啦20幾個功能模組需要的資料,我修改就痛苦的很~~~!!!我只會select * from table where id=1,2,3,。。。。。。。。。。

後台來在網上找啦一堆,看懂啦個大概,很多沒有注意教php操作輸出的陣列集首先我們要了解三個用於聯合查詢的語法:

left   join (左鏈)     right   join(右鏈)     inner jion(內聯);

我們開始講解列子的時候,先要三個表:

表t1是會員的名字,級別id

id     name     lvid(級別id)

1         張         2

2         王         3

3         李         1

4         小         5

表t2是會員的級別id的值(比如1是幼兒園 2是小學生 3是中學生)

lv_id       lv(會員級別值)

1         幼兒園

2         小學生

3         中學生

4         高中生

表t3是會員發帖的表,有帖子id,帖子標題,會員id,帖子屬性(禁止閱讀 和 允許閱讀)

art_id         art_name(帖子標題)       h_id (會員id)         art_pr(帖子屬性)

1                               你                 1                               0

2                               我                 3                               1

3                               他                 1                             0

4                               大家                 3                           1

三個表都建好啦,我們先看錶t1 和 t2 來講解left join 和 right jion

left join 左連查詢 語法是

<?php 

$query="select t1.id, t1.name, t2.lv from t1 left join t2 on t1.lvid=t2.lv_id" ;

while($row=mysql_fetch_array($query)){ print_r($row);

?>

查詢結果如下:

id         name           lv

1              張     小學生

2              王     中學生

3              李     幼兒園

4              小     null

可以看出左連查詢就是按照左邊t1的條件查詢,保留t1所有資料,右邊表t1沒有符合左邊表t2的資料為空

right join剛好相反

<?php

$query ="select t1.id, t1.name, t2.lv from t1 right join t2 on t1.lvid=t2.lv_id"

while($row=mysql_fetch_array($query)){ print_r($row);

?>

查詢結果如下:

id         name           lv

3             李      幼兒園

1             張      小學生

2            王      中學生

null   null     高中生

可以看出左連查詢就是按照左邊t1的條件查詢,保留t2所有資料,t1沒有符合的資料為空

mysql多表聯合查詢

mysql多表聯合查詢操作,3個表以上操作的sql語句 from語句是表選擇語句,需要選擇多個表的時候,用逗號 來分割所選的表。還可以用join語句來定義結合條件。表的別名 選擇的表可以取別名,在下面的例子中,from所選擇的表名後用空格來分割別名 例子1 將表foo取別名 t1,將表bar 取別名...

mysql多表聯合查詢

建立表a插入資料 create table a id int 11 primary key,name varchar 6 not null age int 4 notnull insert into a values 1 111 20 insert into a values 2 222 20 in...

MySQL多表聯合查詢

mysql這方面的資料比較少,手邊的專案用到了多表的聯合查詢,乾脆備忘下來。select a.b.c.from a inner join b on a.cid b.cid inner join c on c.cid a.cid where a.cid 2 and a.id 3select e lin...