Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 28.12.2011 Skąd: Bydgoszcz Ostrzeżenie: (0%)
|
Witam
Chciałby poprosić o pomoc w rozwiązaniu problemu: Najpierw przedstawię kod zapytania:
Problem polega na tym, że jeśli wykonam kod
To zrwaca mi prawidłowo 2 rekordy, gdzie w nazwie występuje 'Sienkiewicz', lecz jeśli chcę zliczyć ilość zakupień książki (nie ważne czy klient kupił 1 czy 10), to pokazuje mi tylko 1 rekord od góry. Jeśli daje bez GROUP BY to zrwaca błąd (bo wyniki muszą być pogrupowane). Patrzyłęm w manuala, w kursy pomocnicze, lecz nie ma tam podobnych przykładów. Pozdrawiam Dragas
Powód edycji: [piotrooo89]: przenosze
|
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 587 Pomógł: 131 Dołączył: 8.02.2010 Ostrzeżenie: (0%)
|
Witam.
Spróbuj tak.
Ten post edytował rocktech.pl 28.12.2011, 11:05:22 |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 28.12.2011 Skąd: Bydgoszcz Ostrzeżenie: (0%)
|
Niestety, ale pokazuje się błąd o następującej treści: Something is wrong in your syntax obok 'LEFT JOIN kup ON (kup.ksiazkaid = ksiazki'.
|
|
|
|
Post
#4
|
|
|
Grupa: Zarejestrowani Postów: 1 195 Pomógł: 109 Dołączył: 3.11.2011 Ostrzeżenie: (10%)
|
ksiazki i kup to aliasy?Przed left join masz przecinek po nazwie kolumny ksiazki, i może on powodować błąd.
Ten post edytował Niktoś 28.12.2011, 17:02:27 |
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 28.12.2011 Skąd: Bydgoszcz Ostrzeżenie: (0%)
|
Nazwy ksiazki i kup to nie są aliasy, lecz nazwy tabel.
Kod działa już lepiej, lecz pierwszy wynik jest w całości zrwacany, lecz drugi jest zwracany w szczątkowej postaci, tzn.: cześć kolumn dostępna jest po nazwach czy aliasach kolumn tylko i wyłącznei przy pierwszym wywołaniu, tak jest np. z "ksiazki.cena AS `cena`". Do $row['cena'] mogę odwołąć się tylko za pierwszym wywyłaniem mysql_fetch_array, lecz za kolejnymi, muszę użyć indeksu kolumny, np. $row['2']. Na razie wyświetlam przy użyciu rekordy przy użyciu indeksów, lecz czy można zrobić tak, aby nazwy kolumn były dostępne przy każdorazowym wywołaniu mysql_fetch_array()? Ponieważ nigdy nie spotkałem się z taką zagadką. Pozdrawiam Dragas |
|
|
|
Post
#6
|
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%)
|
Bo powinieneś grupować po kup.ksiazkaid, a nie ksiazki.id, zarówno w Twoim pierwszym zapytaniu, jak i w tym przedstawionym przez rocktech.pl. Wyrzuć też pola kup.id i kup.ksiazkaid z listy wybieranych pól, bo są tam zbędne (kup.ksiazkaid to ksiazka.id, a id zakupu jest niepotrzebne w ogóle).
EDIT1: Zresztą to i tak nie przejdzie, i nie obejdzie się bez podzapytania. EDIT2: Podzapytań można użyć na dwa sposoby. Tak:
lub tak:
EDIT3: Po głębszym namyśle doszedłem do wniosku, że wszystkie zapytania powinny zadziałać, a na pewno zapytanie by rocktech.pl (oczywiście jeśli pogrupujesz po odpowiedniej kolumnie). Ten post edytował mortus 28.12.2011, 17:50:19 |
|
|
|
Post
#7
|
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 28.12.2011 Skąd: Bydgoszcz Ostrzeżenie: (0%)
|
Dziękuję serdecznei za pomoc, sam raczej nie dałbym sobie z tym rady.
Problem rozwiązałem przy użyciu pierwszego zapytania kolegi mortus. Szczerze powiem, że nie wiedziałem, że w mysql'u można używać takich zapytań z podzapytaniami, bo wiem, że w MSSQL jest to możliwe. Jeszcze raz dziękuję! Pozdrawiam Dragas Ten post edytował Dragas 28.12.2011, 17:59:13 |
|
|
|
![]() ![]() |
|
Aktualny czas: 24.12.2025 - 00:28 |