【问题标题】:Union Query or a better option联合查询或更好的选择
【发布时间】:2013-01-19 19:38:07
【问题描述】:

我有以下三个表,我想通过userid 从它们中提取数据,这是赋予它们关系的一个关键字段。我还想按timestamp 的顺序提取数据,下面是表架构示例,以及我所拥有的联合查询不起作用。

Table1: userid, event_id, event_name, timestamp
Table2: id_user, comment, timestamp
Table3: user_id, photo, timestamp

 $result5 = mysql_query 
     ("(SELECT event_name, timestamp FROM table1 WHERE userid = '25')
    UNION ALL 
       (SELECT comment,timestamp FROM table2 WHERE id_user = '25')
    UNION ALL 
         (SELECT photo,timestamp FROM table3 WHERE user_id ='25')
    ORDER BY timestamp") 
    or die(mysql_error());

【问题讨论】:

  • 所以你想“拉”那个用户的所有 event_names,他所有的 cmets 和他的所有照片?如果这 3 列(event_namecommentphoto)兼容(例如,它们都是 CHARVARCHAR),是的,您的查询似乎没问题。你能澄清一下“它不工作”的原因吗?

标签: php mysql union union-all


【解决方案1】:

考虑到event_namecommentphoto 不相关,您不应该使用任何类型的UNION。这些表中常见的是user_id。您正在寻找JOIN。像这样的:

SELECT a.event_name, a.timestamp, b.comment, b.timestamp, c.photo, c.timestamp
FROM table1 a
INNER JOIN table2 b ON b.id_user = a.userid
INNER JOIN table3 c ON c.user_id = a.userid
WHERE a.userid = '25'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-22
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 2011-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多