mySQL逻辑:表连接的输出不正确

时间:2013-09-02 15:12:37

标签: php mysql sql join

我正在尝试查询两个表:finished_events和flagged_events。首先,我需要与company_id相关的所有内容

  SELECT *
  FROM finished_events
  WHERE company_id=$id
  ORDER by schedule, timestamp
然后我将其更改为:

SELECT * FROM finished_events 
INNER JOIN flagged_events 
      ON finished_events.company_id=flagged_events.company_id 
WHERE finished_events.company_id=$id
ORDER by finished_events.schedule, finished_events.timestamp

我尝试过使用FULL JOIN,LEFT JOIN和RIGHT JOIN都不成功。具体来说,我想得到的是以下代码的共同努力:

$sql = "SELECT *
        FROM finished_events
        WHERE company_id=$id
        ORDER by schedule, time_stamp";

$flagged_sql = "SELECT * 
                FROM flagged_events 
                WHERE company_id=$id 
                ORDER by schedule, time_stamp";

表格有点不同,因此UNION在这里不起作用。我可以发布虚拟数据库条目,但这不会有太多帮助,因为我需要两个表都有。表之间的2个链接是company_id和schedule列。基本上幕后发生的事情是将时间戳放入不同的表中,然后我将其处理成finished_events或flagged_events。标记的事件将需要用户在完成事件之前对其执行某些操作。所以这个脚本正在为GUI生成数据,因此我需要查询两个表并创建一个客户详细信息的关联数组,然后创建一个事件数组(来自这两个表)。所以创建assoc_array是没问题的,我只需要让这个查询吐出所有事件并正确排序。如果您需要任何具体的解决方案,请告诉我,谢谢:)

EDIT SQL小提琴:http://sqlfiddle.com/#!2/d4c30/1 这几乎解决了它但不太正确,它重复了底部的条目

1 个答案:

答案 0 :(得分:0)

如果我理解正确,这可能对您有用:

SELECT a.* FROM (
  SELECT *, 'finished' as event_type FROM finished_events
  UNION
  SELECT *, 'flagged' as event_type  FROM flagged_events) a
ORDER BY a.schedule, a.time_stamp