MySQL Join,显示从一个表链接到具有最高ID的另一个表的所有行

时间:2015-04-02 19:18:47

标签: php mysql database laravel join

我有几个表正在链接。我有一个users表:

+----------+
|   Users  |
|----------|
| id       |
| email    |
| password |
| etc...   |
+----------+

profiles

+-------------+
|  Profiles   |
|-------------|
| profile_id  |
| user_id     |
| first_name  |
| etc...      |
+-------------+

Subscriptions表:

+-----------------+
|  Subscriptions  |
|-----------------|
| subscription_id |
| user_id         |
| start_date      |
| end_date        |
+-----------------+

data看起来像这样:

Users:
------
id: 1
email: Josh@example.com
password: j2jahfu7329 (this is hashed)

Profiles:
---------
profile_id: 1
user_id: 1
first_name: Josh

Subscriptions (There can be multiple for a single user and they can backdate):
-------------
subscription_id: 1
user_id: 1
start_date: 2015/03/01
end_date: 2015/04/01

subscription_id: 2
user_id: 1
start_date: 2015/04/01
end_date: 2015/05/01

subscription_id: 3
user_id: 1
start_date: 2015/02/01
start_date: 2016/02/01

我需要循环访问并返回数据库中的每个用户及其个人资料详细信息,并根据latest返回subscription_id订阅。

在过去的几个小时里,我尝试了很多方法,而且我得到的最接近的是:

SELECT * 
FROM users 
INNER JOIN (SELECT max(subscriptions.subscription_id), subscriptions.end_date, subscriptions.user_id FROM subscriptions WHERE subscriptions.user_id = users.id) AS subs 
ON subs.user_id = users.id    

但是只返回数据库中的FIRST用户,即使是不属于该用户的最新订阅ID。

我试图在Laravel中这样做,但现在开始只是在phpmyadmin中编写查询以使其正确。

我需要做些什么来获得我期待的结果? (结果如下)

id: 1
email: josh@example.com
password: j2jahfu7329
profile_id: 1
first_name: Josh,
subscription_id: 3

提前致谢!

0 个答案:

没有答案