Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> MIN() z innej tabeli
maniutek08
post 26.06.2012, 13:24:45
Post #1





Grupa: Zarejestrowani
Postów: 107
Pomógł: 1
Dołączył: 23.08.2009

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


Witam

Mam tabelę ofert oraz tabelę rozmiarów, wktórej znajdują się sie odpowiednie rozmiary z odpowiednimi cenami. Jedna oferta może mieć kilka rozmiarów.
W jaki sposób ułożyć zapytanie aby jednym zapytaniem pobrać dane oferty oraz jej najniższą cenę i rozmiar

pozdrawiam
Go to the top of the page
+Quote Post
nospor
post 26.06.2012, 13:26:24
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




GROUP BY oraz MIN
Więcej info w manualu


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
maniutek08
post 26.06.2012, 13:27:43
Post #3





Grupa: Zarejestrowani
Postów: 107
Pomógł: 1
Dołączył: 23.08.2009

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


Group BY znam.. ale z tego co czytalem nie zaleca się jego używania.. inne pomysły?
Go to the top of the page
+Quote Post
nospor
post 26.06.2012, 13:29:14
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
ale z tego co czytalem nie zaleca się jego używania
A to dobre smile.gif A gdzie to czytałeś? do tego właśnie co chcesz zrobić masz użyć GROUP BY - po to właśnie został stworzony.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
maniutek08
post 26.06.2012, 13:49:25
Post #5





Grupa: Zarejestrowani
Postów: 107
Pomógł: 1
Dołączył: 23.08.2009

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


Nie muszę Ci tego wskazywać...
Z doświadczenia też wiem że taka operacja na 1000 rekordach ofert po jakieś 4 rozmarówki skutecznie opóźnia ładowanie strony i jest nie efetywne
Inne pomysły?

Ten post edytował maniutek08 26.06.2012, 13:50:34
Go to the top of the page
+Quote Post
nospor
post 26.06.2012, 13:50:42
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Nie muszę Ci tego wskazywać...
Z doświadczenia też wiem że taka operacja na 1000 rekordach ofert po jakieś 4 rozmarówki skutecznie opóźnie łądowanie strony i jest nie efetywne
Jedno wielkie LOL smile.gif

ALe ok. Twoja sprawa, czekaj dalej na inne rozwiązanie smile.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
SmokAnalog
post 11.07.2012, 00:16:48
Post #7





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


Maniutek - GROUP BY to jedna z podstawowych operacji SQL i mechanizmy baz danych są zoptymalizowane, możesz śmiało używać smile.gif

Równie dobrze możesz użyć podzapytań, coś na kształt:
  1. SELECT *,
  2. (
  3. SELECT rozmiar
  4. FROM rozmiarowki
  5. WHERE id_oferty = oferty.id_oferty
  6. ORDER BY cena ASC
  7. LIMIT 1
  8. ) AS najtanszy_rozmiar,
  9. (
  10. SELECT cena
  11. FROM rozmiarowki
  12. WHERE id_oferty = oferty.id_oferty
  13. ORDER BY cena ASC
  14. LIMIT 1
  15. ) AS najnizsza_cena
  16. FROM oferty
Go to the top of the page
+Quote Post
alegorn
post 11.07.2012, 10:44:51
Post #8





Grupa: Zarejestrowani
Postów: 341
Pomógł: 40
Dołączył: 23.06.2009

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


z podzapytaniami to akurat (w standartowym mysql'u) uwazac. nie radzi sobie najlepiej. (tzn baaaaaaaaaaaaardzooooooooooo spooooooowaaaaaaaaaaaaaaaaaalniiiiiiiiaaaaaaaaaaaaaa)
obecnie jest zalecale jest albo przepisanie na joina, albo rozbicie na dwa różne zapytania.

jesli musisz koniecznie uzywac podzapytan - zainteresuj sie silnikiem percona, przepisali ten kawalek kodu od nowa.

j.

edit:: moja pomylka(nie do konca ale nie bylem precyzyjny) nie chodzilo mi o serwer percona ale o fork mariaDB to nie do konca to samo, ale czesto jest w tandemie, tu moja pomylka.

Ten post edytował alegorn 11.07.2012, 15:36:28
Go to the top of the page
+Quote Post
piotrex41
post 11.07.2012, 13:31:27
Post #9





Grupa: Zarejestrowani
Postów: 168
Pomógł: 26
Dołączył: 15.09.2011
Skąd: Wrocław

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


Do tego co chcesz zrobić, to jak napisał @nospor należy użyć GROUP BY i MIN. Jest do dla Ciebie najprostsze i najbardziej optymalne rozwiązanie. Jeśli chodzi o to co przeczytałeś, to nie wiem skąd to wziąłeś, ale albo ktoś się pomylił, albo przegiął ostro, bo wcale to nie obciąża tak bardzo. Nie można wierzyć we wszystko co się gdzieś tam przeczyta, zwłaszcza jak nie jest potwierdzone wink.gif

Pozdro!


--------------------
www.piotrex41.pl - piotrex41 portfolio
d(-.-)b - Music is my life || PHP is my passion
Go to the top of the page
+Quote Post
mmmmmmm
post 11.07.2012, 13:42:18
Post #10





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

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


Cytat(piotrex41 @ 11.07.2012, 14:31:27 ) *
Jeśli chodzi o to co przeczytałeś, to nie wiem skąd to wziąłeś, ale albo ktoś się pomylił, albo przegiął ostro, bo wcale to nie obciąża tak bardzo. Nie można wierzyć we wszystko co się gdzieś tam przeczyta, zwłaszcza jak nie jest potwierdzone wink.gif

I sądzisz, że tysiące internautów bezmyślnie powtarza i nikt tego nie dementuje...
Pseudo baza jaką jest MySQL średnio w porywach do stanów niskich radzi sobie z podzapytaniami. Podobnie jak średnio radzi sobie z WHERE na polach nieindeksowanych. Przy małych tabelach tego nie widać. Przy tabelach rzędu kilkuset tysięcy zaczynają się jej problemy z wydajnością... Niezależnie od ENGINE. I mogę to potwierdzić, bo pracuję z MySQL z tabelami rzędu milionów rekordów... Dla przykładu podam, że na PostgreSQL kłopoty zaczynają się po ok. 10 mln rekordów (zaczyna indeks głupieć, ale wszystko działa OK - robi Scan Seq zamiast Index Seq)
Zresztą MySQL ma tyle błędów, że szkoda gadać...
Go to the top of the page
+Quote Post
SmokAnalog
post 11.07.2012, 13:44:16
Post #11





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


Ponarzekałeś sobie -> jaki wniosek?
Go to the top of the page
+Quote Post
nospor
post 11.07.2012, 14:40:35
Post #12





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
I sądzisz, że tysiące internautów bezmyślnie powtarza i nikt tego nie dementuje...
Pseudo baza jaką jest MySQL średnio w porywach do stanów niskich radzi sobie z podzapytaniami.
Czytaj ze zrozumieniem: my (ja i piotrex41) tu mowimy o group by a nie o podzapytaniach...


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
mmmmmmm
post 11.07.2012, 14:44:52
Post #13





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

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


piotrex41 odniósł się do wypowiedzi alegorn (tak mi się wydaje). A tam była mowa o podzapytaniach.

Ten post edytował mmmmmmm 11.07.2012, 14:45:15
Go to the top of the page
+Quote Post
nospor
post 11.07.2012, 14:45:49
Post #14





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




A ja odnoszę wrażenie ze odniósł się do:
Cytat
Group BY znam.. ale z tego co czytalem nie zaleca się jego używania.. inne pomysły?

Sposób jego wypowiedzi wskazuje, że cały czas pisze do jednej i tej samej osoby,czyli do autora wątku. Jakby chcial zmienić odbiorcę, to by chyba o tym napisał wink.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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 Wersja Lo-Fi Aktualny czas: 18.07.2025 - 15:00