用 PHP+MySQL SELECT 兩個資料表的欄位名稱問題

編寫、設計網頁與程式。

版主: hamu278, 銘仔

版面規則
  • 本版面亦可以討論網頁寄存公司

用 PHP+MySQL SELECT 兩個資料表的欄位名稱問題

文章hamu278 » 2009-07-19, 10:54

我想用 SQL 揀兩個 table
不過有一個問題,就係 a_services 有 name 呢一欄、a_servers 又有 name,咁岩我要 show 晒兩欄出黎,但用到 PHP $abc['name'] 咪撞左?
所以我想問有冇方法將 a_servers 個 name 顯示果時改做類似 $abc['s2_name']、$abc['server_name'] 呢 d :oops: :oops:

代碼: 選擇全部
SELECT s1.`id` , s1.`name` , s1.`maxac` , s2.`name` FROM `a_services` s1, `a_servers` s2 WHERE s1.`catid` = '1';
圖檔
頭像
hamu278
金星會員
 
文章: 4482
註冊時間: 2006-06-04, 08:49
來自: 香港

Re: 用 PHP+MySQL SELECT 兩個資料表的欄位名稱問題

文章hamu278 » 2009-07-19, 11:06

已用 AS 解決。
您沒有權限檢視這篇文章所附加的檔案。
圖檔
頭像
hamu278
金星會員
 
文章: 4482
註冊時間: 2006-06-04, 08:49
來自: 香港

Re: 用 PHP+MySQL SELECT 兩個資料表的欄位名稱問題

文章bananasims » 2009-07-19, 11:06

用 AS
你唔用 LEFT JOIN + ON / WHERE s1.XXX = s2.XXX 佢點知係對應返 a_servers 邊一列資料?
影像.從心 At the heart of the ímage
bananasims
太陽會員
 
文章: 13541
註冊時間: 2005-09-22, 00:00

Re: 用 PHP+MySQL SELECT 兩個資料表的欄位名稱問題

文章hamu278 » 2009-07-19, 11:08

bananasims 寫:用 AS
你唔用 LEFT JOIN + ON / WHERE s1.XXX = s2.XXX 佢點知係對應返 a_servers 邊一列資料?


呢個我知,岩岩用左 WHERE s1.XXX = s2.XXX :oops: :oops:

其實 LEFT JOIN 好 d,定係 SELECT ... FROM `abc`,`def` ...; 好 d? :oops: :oops:
圖檔
頭像
hamu278
金星會員
 
文章: 4482
註冊時間: 2006-06-04, 08:49
來自: 香港

Re: 用 PHP+MySQL SELECT 兩個資料表的欄位名稱問題

文章bananasims » 2009-07-19, 11:11

用 WHERE s1.XXX = s2.XXX,如果 s2 冇對應既資料存在,成列資料都會消失(即係如果 select 一行,mysql_num_rows() = 0)
用 LEFT JOIN + ON,如果 s2 冇對應既資料存在,s1 既欄位都會出現,只係 s2 既欄位維持 NULL
所以我會建議用 LEFT JOIN。

你試下去 PHPMyAdmin 試下 LEFT JOIN 同埋 WHERE 既分別。 :oops:
影像.從心 At the heart of the ímage
bananasims
太陽會員
 
文章: 13541
註冊時間: 2005-09-22, 00:00

Re: 用 PHP+MySQL SELECT 兩個資料表的欄位名稱問題

文章hamu278 » 2009-07-19, 11:16

Thank you.
已轉用 LEFT JOIN ~~

第一次玩 LEFT JOIN,慳番好多 Query 次數 :P :P
圖檔
頭像
hamu278
金星會員
 
文章: 4482
註冊時間: 2006-06-04, 08:49
來自: 香港

Re: 用 PHP+MySQL SELECT 兩個資料表的欄位名稱問題

文章bananasims » 2009-07-19, 11:17

第一次 :shock:
我尋日條巨型 SQL(有去 AL8 同埋 HKEPC 問,最後都係 MySQL 限制唔得)
代碼: 選擇全部
SELECT `c`.`id`, `c`.`type_id`, `c`.`post_uid`, `c`.`content`, `c`.`time`, `c`.`examined`, `u`.`username`, `t`.`subject` FROM `comments` `c` LEFT JOIN `users` `u` ON `c`.`post_uid` = `u`.`uid` LEFT JOIN `c`.`type` `t` ON `t`.`id` = `c`.`type_id` WHERE `c`.`uid` = '{$user['uid']}' ORDER BY `c`.`id` DESC LIMIT 0, 5


其實 LEFT JOIN 寫得差的話,好食 server 資源,所以每條 LEFT JOIN 都要測試過執行時間先得。
Discuz! 5.5 印象中評分定邊度條 LEFT JOIN 勁食資源,所以評分嗰陣個 server 好似就死咁。
影像.從心 At the heart of the ímage
bananasims
太陽會員
 
文章: 13541
註冊時間: 2005-09-22, 00:00

Re: 用 PHP+MySQL SELECT 兩個資料表的欄位名稱問題

文章hamu278 » 2009-07-19, 11:24

咁大鑊… :shock: :shock:
不過依家個資料表得一條資料,試唔到…

PS: 其實我係睇到你個發問 post,所以先走去玩…
圖檔
頭像
hamu278
金星會員
 
文章: 4482
註冊時間: 2006-06-04, 08:49
來自: 香港

Re: 用 PHP+MySQL SELECT 兩個資料表的欄位名稱問題

文章bananasims » 2009-07-19, 11:31

:oops: LEFT JOIN 有需要先用
不過我唔知 LEFT JOIN、RIGHT JOIN、INNER JOIN、OUTER JOIN 等等有乜分別 :oops:
影像.從心 At the heart of the ímage
bananasims
太陽會員
 
文章: 13541
註冊時間: 2005-09-22, 00:00

Re: 用 PHP+MySQL SELECT 兩個資料表的欄位名稱問題

文章hamu278 » 2009-07-19, 11:42

我之前搵過,好似:
代碼: 選擇全部
SELECT [something1] FROM `abc` LEFT JOIN `def` ON [something2] WHERE [something3]


代碼: 選擇全部
SELECT [something1] FROM `def` RIGHT JOIN `abc` ON [something3] WHERE [something2]

一樣 :oops: :oops:
圖檔
頭像
hamu278
金星會員
 
文章: 4482
註冊時間: 2006-06-04, 08:49
來自: 香港

Re: 用 PHP+MySQL SELECT 兩個資料表的欄位名稱問題

文章bananasims » 2009-07-19, 11:42

可能排位有分別
影像.從心 At the heart of the ímage
bananasims
太陽會員
 
文章: 13541
註冊時間: 2005-09-22, 00:00

Re: 用 PHP+MySQL SELECT 兩個資料表的欄位名稱問題

文章Freeman » 2009-07-19, 13:41

Different SQL JOINs

Before we continue with examples, we will list the types of JOIN you can use, and the differences between them.

* JOIN: Return rows when there is at least one match in both tables
* LEFT JOIN: Return all rows from the left table, even if there are no matches in the right table
* RIGHT JOIN: Return all rows from the right table, even if there are no matches in the left table
* FULL JOIN: Return rows when there is a match in one of the tables

http://www.w3schools.com/sql/sql_join.asp
明明地 :oops: :oops:
Freeman
地球會員
 
文章: 1680
註冊時間: 2008-06-25, 21:04

Re: 用 PHP+MySQL SELECT 兩個資料表的欄位名稱問題

文章SkyBread » 2009-07-21, 01:56

bananasims 寫:可能排位有分別

同返你果句...
"用 RIGHT JOIN + ON,如果 s1 冇對應既資料存在,s2 既欄位都會出現,只係 s1 既欄位維持 NULL" :oops:
SkyBread
 


回到 [B1] 網頁製作、程式編寫與介面設計



誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 28 位訪客

cron