Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> select z tabeli jeden do wielu
Gribo
post
Post #1





Grupa: Zarejestrowani
Postów: 237
Pomógł: 17
Dołączył: 1.11.2007
Skąd: Zielona Góra

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


Witam,
Mam beze
  1. CREATE TABLE auto (
  2. id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  3. nazwa VARCHAR NULL,
  4. PRIMARY KEY(id)
  5. );
  6.  
  7. CREATE TABLE auto_czesc (
  8. auto_id INTEGER UNSIGNED NULL,
  9. czesc_id INTEGER UNSIGNED NULL,
  10. INDEX auto_czesc_FKIndex1(auto_id),
  11. INDEX auto_czesc_FKIndex2(czesc_id),
  12. FOREIGN KEY(auto_id)
  13. REFERENCES auto(id)
  14. ON DELETE NO ACTION
  15. ON UPDATE NO ACTION,
  16. FOREIGN KEY(czesc_id)
  17. REFERENCES czesc(id)
  18. ON DELETE NO ACTION
  19. ON UPDATE NO ACTION
  20. );
  21.  
  22. CREATE TABLE czesc (
  23. id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
  24. nazwa VARCHAR NULL,
  25. ikona VARCHAR NULL,
  26. PRIMARY KEY(id)
  27. );


i mam pytanie cche stworzyc liste 10 aut wraz z częściami im przypisanymi czy da rade wyciągnąć wszytsko w 1 zapytaniu sql ? bo teraz robie to tak że najpierw pobieram wszytskie samochody a potem pobieram po id samochodu części z tabeli auto_czesc i joinem dołączam nazwe i ikone z tabeli czesc, ale rzy liście np. 10 samochodów wychodzi 11 zapytań do bazy. Istnieje jakiś lepszy sposób ?


--------------------
Wyszukiwarka noclegów w Polsce i zagranicą.
Najlepszy katalog turystyczny wspomagający pozycjonowanie i promocje stron.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
Mchl
post
Post #2





Grupa: Zarejestrowani
Postów: 855
Pomógł: 145
Dołączył: 17.07.2008
Skąd: High Memory Area

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


Masz zdefiniowane klucze obce, to zrób na nich joiny.

Kod
SELECT a.nazwa, c.nazwa AS czesc, c.ikona FROM auto AS a INNER JOIN auto_czesc AS a_c ON a.id = a_c.auto_id INNER JOIN czesc AS c ON c.id = a_c.czesc_id
Go to the top of the page
+Quote Post
Gribo
post
Post #3





Grupa: Zarejestrowani
Postów: 237
Pomógł: 17
Dołączył: 1.11.2007
Skąd: Zielona Góra

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


no ale w ten sposób dostane wyniki z powtarzającą się nazwą auta czyli np.
subaru silnik
subaru hamulec

a da się zrobić żeby dostać coś takiego: subaru, silnik,hamulec .... ?


--------------------
Wyszukiwarka noclegów w Polsce i zagranicą.
Najlepszy katalog turystyczny wspomagający pozycjonowanie i promocje stron.
Go to the top of the page
+Quote Post
askone
post
Post #4





Grupa: Zarejestrowani
Postów: 654
Pomógł: 121
Dołączył: 27.10.2007
Skąd: Poznań, Łódź

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


Nie da się z prostego powodu. Wynik zapytania zwracany jest w postaci połączonych rekordów, a każda część to osobny rekord więc wynik jest taki jaki jest. Nie wiem w czym miałoby Ci to przeszkadzać, przecież w skrypcie możesz nadmiarowe dane odrzucić...

Pozdro


--------------------
Kliknij jeśli moja odpowiedź Ci pomogła.
askone.pl
Go to the top of the page
+Quote Post
Mchl
post
Post #5





Grupa: Zarejestrowani
Postów: 855
Pomógł: 145
Dołączył: 17.07.2008
Skąd: High Memory Area

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


Da się: GROUP_CONCAT
Go to the top of the page
+Quote Post
phpion
post
Post #6





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Algorytm wygląda mniej-więcej tak:
Kod
pętla po wszystkich rekordach
    jeżeli aktualne auto jest różne od poprzednio wyświetlanego
        wyświetl nazwę auta
        zaktualizuj zmienną przechowującą nazwę auta poprzednio wyświetalnego
    w przeciwnym wypadku
        nie rób nic

    wyświetl informacje o aktualnej części

Dzięki temu uzyskasz efekt (przykładowo):
Kod
subaru:
hamulec
lusterko

suzuki:
kołpak
kierunkowskaz

czyli to, o co Ci chodzi.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 21.08.2025 - 19:46