我在工作中天天研究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...