Mam kwerendy tak:Multiple GROUP_CONCAT na różnych polach MySQL
SELECT product.id,
GROUP_CONCAT(image.id) AS images_id,
GROUP_CONCAT(image.title) AS images_title,
GROUP_CONCAT(facet.id) AS facets_id
...
GROUP BY product.id
I kwerenda działa, ale nie zgodnie z oczekiwaniami, bo jeśli mam produkt o 5 aspektach i 1 obrazek (załóżmy obraz id = 7), a następnie otrzymuję coś takiego w "images_id":
"7,7,7,7, 7"
Jeśli mam 2 obrazy (7 i 3), otrzymuję coś takiego:
"7,7,7,7,7,3,3,3,3,3"
iw aspektach mam coś takiego:
„8,7,6,5,4,8,7,6,5,4”
myślę MySQL jest dokonanie pewnego rodzaju unii zróżnicowanych wiersze zwracane przez zapytanie, a następnie łączenie wszystkich.
Moja Oczekiwany wynik to (za ostatni przykład):
images_id = "7,3"
facets_id = "8,7,6,5,4"
mogę otrzymać, że za pomocą DISTINCT w GROUP_CONCAT, ale wtedy mam inny problem: Jeśli mam dwa obrazy o tym samym tytule, jeden z nich jest pomijany, a następnie otrzymuję coś w rodzaju:
images_id = "7,3,5"
images_title = "Title7and3, Title5"
Tęsknię za relacją pomiędzy images_id a images_title.
Czy ktoś wie, czy możliwe jest wykonanie tego zapytania w MySQL?
Może komplikuję wszystko bez żadnych rzeczywistych korzyści. Próbuję wykonać tylko jedną kwerendę, ponieważ wydajność, ale teraz nie jestem tak pewien, czy jest jeszcze szybciej wykonać dwa kwerendy (jeden do wyboru aspektów, a drugi do obrazów na przykład).
Proszę wyjaśnić, co według Ciebie jest najlepszym rozwiązaniem dla tego i dlaczego.
Dzięki!
Nie rozumiem twojego zapytania bardzo dobrze, ale wygląda na bardzo skomplikowane, to znaczy, potrzebujemy selekcji podrzędnej z grupą dla każdego konkata? Wygląda na coś bardzo powolnego, nie jest szybsze 2 zapytania? – Enrique
@ Eriqueque, nie chodzi o szybkość, chodzi o poprawność. Jeśli mój kod nie musi działać, mogę zrobić wszystko natychmiast. – Johan
@Enrique, Nie musisz wybierać podkategorii dla każdej konkatycji grupy, tylko dla tych tabel, w których dopasowanie przeciwko p.id zwraca więcej niż 1 wiersz na p.id. – Johan