Я присоединяюсь к двум ВЫБОРЫ. Первый из них получает:MySQL-Left Join показывает больше строк, чем ожидалось
t1
id value
1 149
2 149
3 149
4 149
второй один:
t2
id value
149 2
149 13
149 145
149 149
Итак, я присоединяюсь t1/t2 на t1.value = t2.id
. Но результат следующим образом:
1 149 2
1 149 13
1 149 145
1 149 149
2 149 2
2 149 13
2 149 145
2 149 149
3 149 2
3 149 13
3 149 145
3 149 149
4 149 2
4 149 13
4 149 145
4 149 149
Когда желаемый результат должен выглядеть следующим образом:
1 149 2
2 149 13
3 149 145
4 149 149
Я думаю, что проблема возникает из-за этого являются ВЫБРАТЬ и не таблицы. После многопользовательской игры я не смог найти решения.
EDIT: MySQL запросов:
SELECT t1.id_sequence,t2.id_category, t2.tree
FROM
(
SELECT * FROM (SELECT 1 AS id_sequence UNION SELECT 2 AS id_sequence UNION SELECT 3 AS id_sequence UNION SELECT 4 AS id_sequence) as tbl1
CROSS JOIN (SELECT DISTINCT id_catalog_category AS 'id_category' from catalog_category where id_catalog_category = 149) as tbl2
) as t1
LEFT JOIN
(
SELECT child.id_catalog_category AS id_category, ancestor.id_catalog_category AS tree
FROM catalog_category AS child
JOIN catalog_category AS ancestor
ON (child.lft BETWEEN ancestor.lft AND ancestor.rgt)
WHERE child.id_catalog_category = 149 AND ancestor.id_catalog_category != 1
) as t2
ON t1.id_category = t2.id_category
Выберите извлекаться table1 и таблица2 соответственно.
Пожалуйста, разместите ваш запрос и структуры таблиц – FabioCosta