2014-02-10 94 views
0

我有以下兩個表(這裏用隨機數據)麻煩與查詢與兩個表

cu       cgm 
+-----+---------+-----+ +---------+--------+ 
| uid | name | ... | | groupid | userid | 
+-----+---------+-----+ +---------+--------+ 
| 1 | manfred | ... | |  2 |  2 | 
| 2 | peter | ... | |  2 |  5 | 
| 3 | jackson | ... | |  2 |  7 | 
| ... | ... | ... | |  4 |  3 | 
+-----+---------+-----+ +---------+--------+ 
    uid <========= FOREIGN KEY ========== userid 

我想選擇cu.namecu.uid/cgm.userid通過cgm.groupid並把值到一個關聯數組,其中鍵是cu.name和值cu.uid/cgm.userid。我唯一的解決方案是發送一個查詢,以便通過cgm.groupid選擇cgm.userid,發送第二個查詢,通過cu.uid選擇cu.name並將數據放在一起。但我想知道,如果有辦法實現這一點只有一個查詢,並儘可能少使用PHP。

+0

你的意思是什麼'/'是一個部門或一個逗號? –

+0

「/」的意思是「或」,因爲'cu.uid'和'cgm.userid'具有相同的數據。 – Cubinator73

回答

1
SELECT cu.name, cu.uid FROM cu LEFT JOIN cgm ON cu.uid = cgm.userid WHERE cgm.groupid = 2 

您可以調整WHERE條件您的需求。

+0

謝謝你。但是我不完全理解'開'。是否將'cu'的數據集與'cgm'連接起來? – Cubinator73

+0

它等同於'WHERE x = y',但對於連接 - 例如'加入cgm ON cu.uid = cgm.userid - 等同於WHERE cu.uid = cgm.userid' –

+0

好的,謝謝:) – Cubinator73

2

你有LEFT JOIN SQL可能是:

SELECT cu.name, cu.uid, cgm.userid, cgm.userid, cgm.groupid 
FROM cu 
LEFT JOIN cgm ON cu.uid = cgm.userid 
WHERE cgm.groupid = 2 -- your var there 

儘管你不需要在這種情況下,選擇cgm.userid,因爲它應該是相同的cu.uid(如果沒有的話,這個連接不正確)。

隨着PHP:

$group_id = 2; 
$sql = "SELECT ..... WHERE cgm.groupid = " . $group_id; 
$query = $db->query($sql); // your query functions here... 

To help you avoid SQL injection, your should bind$group_id作爲參數:

$sth = $db->prepare("SELECT ... WHERE cgm.groupid = :group_id"); 
$sth->bindParam(':group_id', $group_id, PDO::PARAM_INT); // only accept integers 
$sth->execute(); 

更多信息:

+0

也謝謝:) – Cubinator73

0

是的,你可以通過使用連接。使用下面的查詢。

select uid,name from cu,cgm where uid=userid and groupid =<GROUP_ID>; 

您可以使用PDO連接您的數據庫。

$conn= new PDO('mysql:host=localhost;dbname=chatting4u','root',''); 
    $stmt=$conn->prepare('select uid,name from cu,cgm where uid=userid and groupid =<GROUP_ID>'); 
    $stmt->execute(); 
    $row=$stmt->fetchall(PDO::FETCH_ASSOC); 

現在您將在$ row數組中獲得uid,uname。試試吧,我希望它能奏效。

參考: -

DATABSE Joins->http://www.w3schools.com/sql/sql_join.asp

PDO在PHP的>http://www.php.net/manual/en/book.pdo.php

+0

這不完全是我想要的。我想通過'groupid' – Cubinator73

+0

yup選擇'uid'和'name'。我錯過了。檢查我的修改答案。用您期望的價值替換。 –