Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 17.03.2007 Skąd: Katowice Ostrzeżenie: (0%)
|
Mam dwie tabele połączone trzecią (połączenie n:m).
Tablica: localization; Kolumny: localizationID [PK], localizationIP, localizationName, localizationComment Tablica: products; Kolumny: productsID [PK], productsName, productsVersion, productsType Tablica łącząca: localizationProducts; Kolumny: localizationID [PK], [i]productsID [PK] Tablica products zawiera produkty pogrupowane na 3 typy (productsType). Wyciągam dane localizationIP, productsName i teraz pytanie jak wyciągnąć powyższe dane z mała zmianą. Zamiast productsName chciałbym wyciągnąć trzy kolumny dla poszczególnych productsType. Aktualnie mam zapytanie:
co daje wynik: Kod IP Produkt1 Produkt2 Produkt3 10.8.3.9 Nazwa3 10.8.3.9 Nazwa2 10.8.3.9 Nazwa1 Jak usunę p.productsType z GROUP BY mam wynik: Kod IP Produkt1 Produkt2 Produkt3 10.8.3.9 Nazwa1 Efekt jaki chciałbym osiągnąć to: Kod IP Produkt1 Produkt2 Produkt3 10.8.3.9 Nazwa1 Nazwa2 Nazwa3 POMOCY!!! (IMG:http://forum.php.pl/style_emoticons/default/sadsmiley02.gif) Ten post edytował Dexiu 4.03.2009, 11:43:20 |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 17.03.2007 Skąd: Katowice Ostrzeżenie: (0%)
|
Kod IP | Produkt1 | Produkt2 | Produkt3 |
---------------------------------------------------- 10.8.3.9 | NP11,NP12 | | NP31,NP32,NP33 | |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 3 Dołączył: 3.03.2009 Ostrzeżenie: (0%)
|
Kod IP | Produkt1 | Produkt2 | Produkt3 | ---------------------------------------------------- 10.8.3.9 | NP11,NP12 | | NP31,NP32,NP33 | zmienia to troche postac rzeczy i nadal uwazam ze da sie to znacznie optymalniej rozwiazac, ale jezeli jestes uparty (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) do tej postaci to powinno pomoc: Kod SELECT l.localizationIP,
GROUP_CONCAT(DISTINCT p1.productsName) AS "Produkt 1", GROUP_CONCAT(DISTINCT p2.productsName) AS "Produkt 2", GROUP_CONCAT(DISTINCT p3.productsName) AS "Produkt 3" FROM localization l LEFT JOIN products p1 ON p1.productsType = "Produkt1" AND EXISTS (SELECT * FROM localizationproducts lp WHERE lp.localizationID = l.localizationID AND lp.productsID = p1.productsID) LEFT JOIN products p2 ON p2.productsType = "Produkt2" AND EXISTS (SELECT * FROM localizationproducts lp WHERE lp.localizationID = l.localizationID AND lp.productsID = p2.productsID) LEFT JOIN products p3 ON p3.productsType = "Produkt3" AND EXISTS (SELECT * FROM localizationproducts lp WHERE lp.localizationID = l.localizationID AND lp.productsID = p3.productsID) WHERE l.localizationID = 1 GROUP BY l.localizationID |
|
|
|
Dexiu Łączenie dwóch tabel trzecią. 4.03.2009, 10:16:40
kefirek Daj może tak
[SQL] pobierz, plaintext GROUP BY IP[... 4.03.2009, 10:22:59
Dexiu Nic nie daje.
A doszedł jeszcze jeden problem, a ... 4.03.2009, 11:18:10
mongea hi
wynikiem polaczenia jest iloczyn kartezjanski,... 4.03.2009, 12:07:38 
Dexiu Cytat(mongea @ 4.03.2009, 12:07:38 ) ... 4.03.2009, 12:50:08 
mongea Cytat(Dexiu @ 4.03.2009, 12:50:08 ) N... 4.03.2009, 13:22:30
Dexiu Ok dzięki działa.
Pozdrawiam. 4.03.2009, 16:18:33 ![]() ![]() |
|
Aktualny czas: 28.12.2025 - 16:38 |