PHP:选择2个表?
我为每个用户提供了一个活动页面和一个状态消息页面 在活动中,它包含用户所做的事情,例如与某人成为朋友、对图片发表评论等等PHP:选择2个表?,php,sql,mysql,database,Php,Sql,Mysql,Database,我为每个用户提供了一个活动页面和一个状态消息页面 在活动中,它包含用户所做的事情,例如与某人成为朋友、对图片发表评论等等 users_activities id | uID | msg | date 在users\u statusmessages中,我得到了用户创建的statusmessages users_statuses id | uID | message | date uID是用户的id 现在我想选择这两个选项,同时{}将它们放在一个选项中。其中,它们按date desc排序(因
users_activities
id | uID | msg | date
在users\u statusmessages中,我得到了用户创建的statusmessages
users_statuses
id | uID | message | date
uID是用户的id
现在我想选择这两个选项,同时{}将它们放在一个选项中。其中,它们按date desc排序(因为两个表中的日期都是UNIX时间戳)
所以类似于其中uID='$userID'按日期排序DESC
我希望它看起来是什么样的例子:
User: Today is a good day (message) (date: 1284915827) (users_statuses)
User have added as Jack as friend (msg) (date: 1284915811) (users_activities)
User: I have a hard day today (message) (date: 1284915801) (users_statuses)
User have commented on Jacks picture (msg) (date: 1284915776) (users_activities)
我该怎么做才对呢?你会想使用工会 这是未经测试的
(SELECT uID, msg as message, date from users_activities)
UNION
(SELECT uId, message, date from users_statuses) order by date desc limit 20
该页面上还有很多示例您需要使用UNION运算符:
SELECT ua.msg,
ua.date,
'activity' AS is_table
FROM USERS_ACTIVITIES ua
WHERE ua.uid = '{$userID}'
UNION ALL
SELECT us.message,
us.date,
'status'
FROM USERS_STATUSES us
WHERE us.uid = '{$userID}'
ORDER BY `date`
联合
UNION
删除重复项UNION ALL
不会删除重复项,而且速度更快
但是SELECT中每个位置的数据类型必须匹配。在提供的查询中,您可以看到日期列在第二个位置被引用。如果在第一次和第二次查询之间颠倒了列顺序,则会出现错误
ORDER BY应用于标准SQL中联合查询的结果。在MySQL中,这包括
LIMIT
子句。但是MySQL也支持在联合查询的周围放上括号,这样您就可以在联合查询之前使用ORDER BY&LIMIT了。类似的方法就可以了
SELECT act.*,status.* FROM users_activities act, users_statuses status WHERE act.id = status.id AND status.id = '$UID' ORDER BY status.date,act.date DESC LIMIT 30
为了视觉目的而隔开:
SELECT
act.*,status.*
FROM
users_activities act,
users_statuses status
WHERE
act.id = status.id
AND
status.id = '$UID'
ORDER BY
status.date,act.date DESC
LIMIT
30
你可能误解了这个问题。据我所知,活动和状态之间没有关系。当我在一段时间内使用它时($show=mysql\u fetch\u array($query))我接收:mysql\u fetch\u array()期望参数1是资源,布尔值在中给出。这是因为ORDER BY ua.date,我如何解决这个问题?在等待订单部分的回答时,我尝试了echo$show[“msg”],它工作正常,可以获取所有用户的状态,但当我执行$show[“message”]时,显示任何内容。只是注意到,当我执行$show[“msg”]时,它会像我一样显示msg和消息wanted@Karem:是的,列引用基于联合的第一个查询。对不起,除了这个,我什么都提到了。好吧,我想最后一件事,我正在试图找出
uID
='$USER',但是我没有得到任何结果。这是怎么回事?