Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Relacje wiele do wielu i tworzenie zapytania do bazy, proszę o poradę w optymalizacji zapytania do bazy
pejot
post
Post #1





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 3.02.2008

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


Witam,

W zapytaniu będzie używane 21 możliwości różnych zmiennych które będą wprowadzane z formularza ale tak się zastanawiam czy dobrze podchodzę do tematu.

Baza wygląda tak:
5 tabel jedna z nich engine_has_model jest stworzona z relacji n:m

Proste zapytanie funkcjonują bardzo dobrze ale czy przy bardziej złożonych zapytaniach sprawdzi się ta konstrukcja.

  1. SELECT
  2. ma.mark AS 'Marka',
  3. mo.model AS 'Model',
  4. en.engine AS 'Silnik',
  5. sp.oe AS 'Pierwsze wyposażenie',
  6. sp.plt AS 'P/LT',
  7. sp.width AS 'Szerokość',
  8. sp.series AS 'Profil',
  9. sp.zr AS 'Typ opony A',
  10. sp.r AS 'Typ opony B',
  11. sp.rim AS 'Średnica koła',
  12. sp.li AS 'Indeks nośności',
  13. sp.si AS 'Indeks prędkości',
  14. sp.axle AS 'Oś',
  15. sp.rfxlc AS 'Dodatkowe oznaczenie',
  16. sp.pr AS 'Opasanie',
  17. sp.teren AS 'Typ samochodu',
  18. sp.barpartfront AS 'Ciśnienie przód',
  19. sp.barpartrear AS 'Ciśnienie tył',
  20. sp.barfullfront AS 'Ciśnienie przód obciążony',
  21. sp.barfullrear AS 'Ciśnienie tył obciążony',
  22. sp.special AS 'Homologacje'
  23.  
  24. FROM mark ma,
  25. model mo,
  26. engine en,
  27. engine_has_model ehm,
  28. spec sp
  29. WHERE ma.id = ehm.model_mark_id AND ma.id=mo.mark_id AND mo.id = ehm.model_id AND en.id=ehm.engine_id AND sp.id=ehm.spec_id AND ma.mark='AUDI' AND sp.oe='B' AND sp.width='185'


Proszę o jakieś wskazówki.

Ten post edytował pejot 27.03.2013, 23:24:50
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
mmmmmmm
post
Post #2





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


1. wskazówka: zamień na JOIN (ew. LEFT JOIN)
Go to the top of the page
+Quote Post
pejot
post
Post #3





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 3.02.2008

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


Jednak nie było to takie trudne jak mi się wydawało i zrobiłem coś takiego:

  1. ...
  2. FROM
  3. engine_has_model ehm
  4. LEFT JOIN mark ma ON ma.id = ehm.model_mark_id
  5. LEFT JOIN model mo ON mo.id = ehm.model_id
  6. LEFT JOIN engine en ON en.id=ehm.engine_id
  7. LEFT JOIN spec sp ON sp.id=ehm.spec_id
  8. WHERE ma.mark='AUDI' AND sp.oe='B
  9.  


Czy taka konstrukcja jest ok?

Ten post edytował pejot 28.03.2013, 09:41:12
Go to the top of the page
+Quote Post
mmmmmmm
post
Post #4





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


Jak dotąd jest OK
Go to the top of the page
+Quote Post
pejot
post
Post #5





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 3.02.2008

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


Ok. Dziękuję

Chcę stworzyć formularz który będzie działał na zasadzie zależności a mianowicie. Gdy wybiorę jedną opcję to na podstawie niej pojawią się kolejne opcje do wyboru.

Ze względu na to, że będzie tych danych bardzo dużo musi to odbyć się to na zasadzie łączenia z bazą danych i pobieraniu danych (oczywiście . Czy możecie mnie nakierować jak to zrobić (jakiś podobny poradnik) .
Go to the top of the page
+Quote Post

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: 25.12.2025 - 03:28