PHP / MySQL - 根据其他结果选择

时间:2010-11-05 17:40:39

标签: php mysql

嘿人,在这里寻求帮助。

基本上我在MySQL数据库中有两个表jobsdates

每个日期按ID引用作业,有时多个日期引用单个作业。

我正在进行此查询(x是一个变量整数):

SELECT * FROM jobs LIMIT x,50

现在我有50个工作记录的结果,我想在一个查询中检索指向这50个工作的所有日期。

如果不迭代结果并对每次迭代进行查询,如何才能完成?

希望我足够清楚:S

PS:没有设法用一点mysql结构绘制一个像样的表。

2 个答案:

答案 0 :(得分:1)

有两种方法可以做到这一点。

  1. 使用 IN 关键字。

    SELECT * 
    FROM dates 
    WHERE job_id 
        IN (1, 2, 3, 4, ..)
    
  2. 一次全部选择。

    SELECT * 
    FROM jobs 
    LEFT JOIN dates 
        ON jobs.job_id = dates.job_id 
    LIMIT x, 50
    
  3. 这将为每个(作业,日期)组合提供一行,每个日期可能有多个作业。

答案 1 :(得分:1)

SELECT *
FROM jobs
INNER JOIN dates
    ON dates.job_id = jobs.id
LIMIT x,50

这会将它限制为只有那些与它们相关的日期的作业。因此,如果您想查看可能没有关联日期的作业,请使用OUTER join:

SELECT *
FROM jobs
LEFT JOIN dates ON dates.job_id = jobs.id
LIMIT x, 50