Как я могу иметь SQL Max для ЛЕВОГО СОЕДИНЕНИЯ?

#php #html #sql

#php #HTML #sql

Вопрос:

Как я могу найти МАКСИМАЛЬНОЕ значение tenant_id для ЛЕВОГО СОЕДИНЕНИЯ с заданным stall_id?

 $sql = "SELECT * FROM stall s 
        LEFT JOIN tenant t 
        ON t.stall_id = s.stall_id
        LEFT JOIN rent r
        ON r.tenant_id = t.tenant_id AND r.rent_status = 1
        WHERE s.stall_id = 1";
  

Комментарии:

1. Почему не просто select max(rent_status)... ?

2. Вы спрашиваете МАКСИМАЛЬНОЕ значение или количество?

3. потому что я отображаю другие значения из других таблиц.

4. @Kushan Мне действительно трудно понять, какой код может использоваться. Я намерен отобразить сведения о стойле в модальном. Если он свободен или занят. (rent_status=1 для занято, а rent_status=0 для вакантно).

Ответ №1:

Вы хотите, как этот:-

     SELECT * FROM stall s 
    LEFT JOIN tenant t 
    ON t.stall_id = s.stall_id
    LEFT JOIN rent r
    ON r.tenant_id = t.tenant_id AND r.rent_status = 1
    WHERE s.stall_id = 1 ORDER BY r.tenant_id desc LIMIT 1
  

Комментарии:

1. Вы очень умный человек, который просто догадывается, что я хочу отобразить.

Ответ №2:

Я не думаю, что вам нужно использовать MAX() в этом случае, поскольку rent_status поле выглядит как логическое значение (1 или 0). Это означает, что простое INNER JOIN решение сделает свое дело.

 SELECT * FROM `stall` AS s
INNER JOIN rent AS r ON r.stall_id = s.id AND r.rent_status = 1
WHERE s.stall_id = 1