我正在尝试查询两个表:finished_events和flaged_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或flaged_events。标记的事件将需要用户对此做些什么,直到它成为一个完成的事件。因此,这个脚本正在为GUI生成数据,因此我需要查询这两个表,并创建一个客户详细信息的关联数组,然后创建一个事件数组(来自这两个表格)。因此,创建assoc_array是没有问题的,我只需要得到这个查询来吐出所有事件并正确排序。如果你需要任何具体的东西来解决这个问题,请告诉我,谢谢:)
编辑SQL Fiddle:http://sqlfiddle.com/#!2/d4c30/1这几乎修复了它,但不太正确,它重复了底部的条目
如果我理解正确,这可能对你有用:
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