我正在尝试做一个简单的SQL查询,但我正在努力做到正确。
我有一个名为trips的表,它有一个created_at列,以及一个user_id列(以及其他内容)。
我还有用户名表和电子邮件表。
我正在尝试获取过去12个月内发布过旅行的用户名和电子邮件列表。
到目前为止我写过这个查询:
SELECT `user_id`
FROM `trips`
WHERE trips.created_at > '2014-03-01 00:00:00'
这为我在过去12个月内创建旅行的用户提供了user_id,但我不知道如何扩展它,因此它从用户表中提供了他们的姓名和电子邮件。
答案 0 :(得分:2)
您还需要查询其他表。我假设您的用户表具有名称用户。它有电子邮件名称和电子邮件列
SELECT user.name, user.email
FROM `trips`, user
where user.id=trips.userid
and trips.created_at > '2014-03-01 00:00:00'
您也可以使用嵌套查询,此查询将根据嵌套查询返回的ID显示所有用户。
select * from user where id in (
SELECT `user_id`
FROM `trips`
WHERE trips.created_at > '2014-03-01 00:00:00'
)
答案 1 :(得分:0)
你也可以用JOIN来做。像这样:
SELECT users.name ,users.email,users.`user_id`
FROM `trips`
JOIN users
ON user.user_id=trips.userid
WHERE trips.created_at > '2014-03-01 00:00:00'
或者你可以用exists:
来做SELECT
users.name ,
users.email,
users.`user_id`
FROM
users
WHERE EXISTS
(
SELECT NULL
FROM trips
WHERE trips.created_at > '2014-03-01 00:00:00'
AND user.user_id=trips.userid
)
答案 2 :(得分:0)
使用JOINS ..
SELECT t.user_id, u.user_id, u.user_name
FROM trips t
JOIN users u on t.user_id=u.user_id
WHERE trips.created_at > '2014-03-01 00:00:00'
答案 3 :(得分:-1)
select user_id, name, emails from trips where created_at>'2014-03-01 00:00:00'