2011-08-23 123 views
0

我基本上试图做的是获取员工表,获取每个职位名称的ID,然后打另一个表(基于获取的ID),并获取我的数据有兴趣关闭。PHP/MySQL查询

我到目前为止的做法是做一个查询,用一个while循环去获得所有工作职位名称的id,并且为每个id使用另一个循环(连接查询)去减去更多的数据。 我认为我的方法是错误的,因为我怀疑我可以将这两个查询合并成一个不知道如何。

//new db connection here... (1) 
$query="SELECT * FROM staff WHERE jobtitle='$forEachJob'"; 
$result=mysql_query($query); 
while ($row = mysql_fetch_assoc($result)) {  
    $idFetched = $row['id']; 
    //new db connection here... (2) 
    $nextQuery = "SELECT * FROM schedule WHERE name='$idFetched' ORDER BY Day asc"; 
    $nextResult = mysql_query($nextQuery) 
} 
+0

哪里有小BobbyDropTables? – Layke

+0

我在这里没有真正看到问题。你问如何更有效地做到这一点? –

+0

我认为是的。 – Gohoong

回答

2

你想要做MySQL中的JOIN:

SELECT * FROM staff 
JOIN schedule ON schedule.name = staff.id 
WHERE jobtitle = '$forEachJob' 
ORDER BY Day ASC 

顺便说一句,避免使用SELECT *,并寻找到一个DB包装类如PDO消毒/备查询。

+0

我认为这就是它,但我需要再问一件事。由于我在我的查询中加入了我的表格,我仍然以这种格式获取结果$ row ['name']。那么如果两个表中都有名字呢?我可以去$ row ['staff.name']或$ row ['schedule.name']? – Gohoong

+0

而且越来越深,如果我必须循环访问每个staff.id并在日程表中的数据之间进行比较,那么如果单个查询仍在讨论中呢?我看到它的方式,我必须去为每个用户的单个查询。有没有更高效的方法? – Gohoong

+0

不一定;听起来像你在谈论一个“IN”条款 –