У меня есть 2 выбора:
SELECT *
FROM driverdetails
WHERE driverdetails.driverid = '32bbdbe8-eda0-32a5-92c0-f9215e24edcf'
SELECT *
FROM location
WHERE location.utc = ( SELECT MAX(location.utc)
FROM location
WHERE location.driverid = '32bbdbe8-eda0-32a5-92c0-f9215e24edcf'
);
И я пытаюсь получить один результат, например: Столбцы из select1 + столбцы из select 2
Как мне получить столбцы один за другим, сохранив все условия из примера?
Действительно ли driverdetails.driverid
==
является location.truckid
, то есть можем ли мы ПРИСОЕДИНИТЬСЯ к этим двум столбцам? или это был просто пример
Я изменил, чтобы иметь тот же столбец: driverid
Один и тот же столбец driverid
в обеих таблицах, и значение должно быть одинаковым.
Затем вы должны попытаться использовать подзапрос:
SELECT
(SELECT *
FROM driverdetails
WHERE driverdetails.driverid = '32bbdbe8-eda0-32a5-92c0-f9215e24edcf'
),
(SELECT *
FROM location
WHERE location.utc = ( SELECT MAX(location.utc)
FROM location
WHERE location.driverid = '32bbdbe8-eda0-32a5-92c0-f9215e24edcf'
);
UPD: после того, как вы отредактировали таблицы, чтобы они соответствовали какому-то столбцу, я рекомендую вам использовать ответ выше
Спасибо за ответ, он отлично работает. Кроме того, псевдонимы должны быть добавлены после каждого select
.
SELECT *
FROM driverdetails
INNER JOIN location ON location.driverid = driverdetails.driverid
WHERE driverdetails.driverid = '32bbdbe8-eda0-32a5-92c0-f9215e24edcf'
На вышеизложенном вы присоединитесь к одному. Но в соответствии с вашим состоянием, ему нужен MAX(location.utc)
поэтому для этого вам нужно создать временную таблицу по запросу
SELECT *
FROM driverdetails
INNER JOIN (
SELECT *,MAX(location.utc) as maxUTC
FROM location
GROUP BY location.driverid
) as location_temp ON location_temp.driverid = driverdetails.driverid
WHERE driverdetails.driverid = '32bbdbe8-eda0-32a5-92c0-f9215e24edcf'
Надеюсь, что это работает для вас.
Это несовместимо с 'sql_mode=only_full_group_by'
Затем используйте тот же запрос с временной таблицей. или заменить sql_mode SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
SELECT * FROM driverdetails INNER JOIN ( SELECT * FROM location WHERE location.utc = ( SELECT MAX(location.utc) FROM location WHERE location.driverid = '32bbdbe8-eda0-32a5-92c0-f9215e24edcf' ) ) as location_temp ON location_temp.driverid = driverdetails.driverid WHERE driverdetails.driverid = '32bbdbe8-eda0-32a5-92c0-f9215e24edcf'
Привет, помогите нам помочь вам, показав нам пример результата, которого вы хотите достичь, пожалуйста