В настоящее время я пытаюсь получить данные из 2 таблиц с LEFT JOIN, имеющим неизвестное значение.
Я пытался использовать LEFT JOIN, но это не сработало.
Вот мой пример кода:
SELECT
cc.shid,
cc.user,
ts.type,
sum(cc.qty1) + sum(cc.qty2) as qty_tot,
COUNT(cc.id) as nb
FROM
content_c cc
LEFT JOIN
(SELECT
s.shid,
s.type
FROM
tab_s s
LIMIT 1
) as ts ON ts.shid = cc.shid
WHERE
cc.time_i like '2019-01%'
GROUP BY
cc.user,
ts.type
С этим запросом он никогда не будет работать: ts будет содержать первое вхождение tab_s независимо от cc.shid. Интересно, есть ли способ сделать это:
LEFT JOIN
(SELECT
s.shid,
s.type
FROM
tab_s s
WHERE
s.shid = cc.shid
LIMIT 1
) as ts ON ts.shid = cc.shid
Есть идеи? Есть ли в SQL понятие указателя или что-то в этом роде? Как я могу использовать & cc.shid, или @ cc.shid?
Обратите внимание, что выполняется следующее:
LEFT JOIN tab_s ts ON ts.shid = cc.shid
Мой запрос займет более 1 минуты для отображения результатов. И я не могу установить индекс в tab_s.shid так же хорошо, как cc.shid, так как он встречается несколько раз.
Пожалуйста, имейте в виду, что для content_c может быть несколько раз cc.shid, поэтому мне нужно получить только первый результат (LIMIT 1). Это важно.