2009-06-01 101 views
2

我想創建一個目錄,我有兩個表,條目和位置。每個條目將能夠有多個位置,所以我假設最好的想法(如果錯誤是正確的)是創建第三個表格,我指定'鏈接'。例如:PHP MySQL加入表

Marly:France 
Karla:Argentina 
Smith:USA 
Katie:France 
Smith:United Kingdom 
Katie:USA 

當我想列出來自法國的人時,我會進入第三張表,並拉起位置=法國的名字。我完全可以做到這一點,但現在我需要從條目表中檢索法國每個人的每個姓名的數據(根據第三張表格)。我很確定我以前見過這個。任何指針? :d

回答

1
SELECT `entry`.* 
FROM `entry` 
JOIN `entry-locations` ON `entry-locations`.`entry-id` = `entry`.`name` 
WHERE `entry-locations`.`location` = 'Aberdeen' 

$res = mysql_query('all-that-stuff-above'); 
while($row = mysql_fetch_assoc($res)) { 
    echo $row['name'] . "\n"; 
} 
mysql_free_result($res); 
+0

我想限制在那隻小狗上返回的列,並且我會在WHERE部分添加一些NOT IS NULL子句。否則,你會得到一些意想不到的結果。 – Eric 2009-06-01 15:04:20

1
SELECT 
    entryt.name AS name, 
    locationt.location AS location 
FROM locationt, entryt 
WHERE locationt.location = "France" 

記住:改變我以前在那裏的名字:

  • 我命名的條目表爲 「entryt」
  • 和定位表作爲 「locationt」

應該和所有居住在法國的人一起返回「名字」。

很確定會工作。不過,如果我錯了,請糾正我。

0

SELECT * FROM entry WHERE name in (SELECT name FROM links WHERE location = 'FRANCE');

我假設表名稱爲「進入」 &「鏈接」和列名「entry.name」和「links.location」。