Новейший кредит на пользователя для всех пользователей - PullRequest
0 голосов
/ 08 октября 2011

// Редактировать:

Все отлично работает с:

SELECT u.*,
    l.cod AS loans_cod,
    l.step AS loans_step
FROM users AS u
LEFT JOIN loans AS l
ON u.id = l.users_id
WHERE l.step < 12
    OR NOT EXISTS
        (SELECT l.id
            FROM loans
            WHERE l.users_id = u.id
        )
GROUP BY u.id

Теперь я могу выбрать всего пользователя и его последний заем.Спасибо, и я думаю, что мое решение поможет будущим пользователям.

Ответы [ 3 ]

1 голос
/ 08 октября 2011

если вы хотите последний кредит, вы можете добавить что-то вроде этого

ORDER BY l.date DESC GROUP BY u.id
1 голос
/ 08 октября 2011
SELECT u.*,
       l.cod  AS loans_cod,
       l.step AS loans_step
FROM   users AS u
       LEFT JOIN loans AS l
         ON u.id = l.users_id
WHERE  u.id != :id  
  AND  l.timestamp = (SELECT MAX(l.timestamp)
                      FROM loans AS l2
                      WHERE l2.users_id = l.users_id)

Где timestamp - это столбец в вашей таблице, который указывает, когда был создан заем, или иным образом дает вам время, с которым вы можете сравнить.

0 голосов
/ 08 октября 2011

Попробуйте это:

SELECT u.*, l.cod AS loans_cod, 
l.step AS loans_step 
FROM users AS u inner join
(
   select max(l.loan_id) as loan_id, l.users_id , l.cod, l.step
   from loans l 
   group by 
   l.users_id,l.cod,l.step
) as l
ON u.id = l.users_id  
WHERE u.id != :id 

Примечание: избегайте select *, это очень плохая практика. Перечислите все столбцы, которые вам нужны.

...