2009-06-01 67 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”。