Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Łączenie dwóch tabel trzecią., Problem z odpowiednim wyciąganiem danych...
Dexiu
post
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:
  1. SELECT l.localizationIP AS IP, IF (p.productsType='Produkt 1', p.productsName, '') AS 'Produkt 1',
  2. IF (p.productsType='Produkt 2', p.productsName, '') AS 'Produkt 2',
  3. IF (p.productsType='Produkt 3', p.productsName, '') AS 'Produkt 3'
  4. FROM localization l
  5. LEFT JOIN localizationproducts lp ON lp.localizationID=l.localizationID
  6. LEFT JOIN products p ON lp.productsID=p.productsID
  7. WHERE l.localizationID=1
  8. GROUP BY l.localizationID, p.productsType;

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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Dexiu
post
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 |
Go to the top of the page
+Quote Post
mongea
post
Post #3





Grupa: Zarejestrowani
Postów: 8
Pomógł: 3
Dołączył: 3.03.2009

Ostrzeżenie: (0%)
-----


Cytat(Dexiu @ 4.03.2009, 14:13:43 ) *
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
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 10.10.2025 - 12:54