![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 0 Dołączył: 26.09.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam serdecznie.
Napotkałem na pewne zapytanie do bazy danych. Wedlug obecnego stanu mojej wiedzy, jakoś był bym w stanie rozszyfrować całość zapytania, ale muszę poprosić o małą pomoc. Mianowicie, co oznacza np 'a' przed nazwą tabeli... SELECT a.firstname. np: $wynik = mysql_query("SELECT a.firstname,a.lastname,a.email,a.lastaccess,SUM(b.timemodified-b.timestart),c.data FROM mdl_user a,mdl_quiz_attempts b, mdl_user_info_data c WHERE a.id=b.userid AND b.userid=c.userid AND c.fieldid = 3 AND a.id > 2 GROUP BY b.userid ASC") or die('Błąd zapytania'); A najlepiej, jak by ktoś był na tyle uprzejmy i pokolei przetłumaczył to zapytanie na polski ![]() Pozdrawiam serdecznie. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 341 Pomógł: 40 Dołączył: 23.06.2009 Ostrzeżenie: (0%) ![]() ![]() |
hm.
mimo wszystko sugerowalbym jakis kurs przerobic, to jest dosc podstawowa informacja. tutaj konkretnie twoje a jest aliasem zdefiniowanym w sekcji FROM mdl_user a (definicja aliasu czesto jest poprzedzana slowem AS czyli mdl_user AS a) j. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
Przede wszystkim to zapytanie masz skopane. Iloczyn kartezjański z 3 tabel?? TYLKO i WYŁĄCZNIE do testów bądż nauki można zrobić coś takiego. Inaczej zarżniesz server. Po drugie - używasz agregatów bez funkcji agregującej - Masz SUM(), a nie masz odpowiedniego GROUP BY. Tylko MySQL pozwala na takie badziewie. I to źle skonfigurowany.
Po trzecie sprawdź EXPLAIN, a potem zamień kolejność warunków i jeszcze raz sprawdź EXPLAIN. Ten post edytował mmmmmmm 26.06.2012, 18:13:52 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 2 355 Pomógł: 533 Dołączył: 15.01.2010 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
SELECT: wybierz kolumnę firstname z tabeli a itd. oraz sumę kolumn: b.timemodified-b.timestart
FROM: z tabeli:mdl_user, której chwilowo zmienimy nazwę na: a itd. WHERE: gdzie id z tabeli a = userid z tabeli b itd. GROUP BY: grupuj po userid z tabeli b Najważniejsze co ma ze sobą związek, pogrubione |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 341 Pomógł: 40 Dołączył: 23.06.2009 Ostrzeżenie: (0%) ![]() ![]() |
mmmmmmm :: robisz niepotrzebne zamieszanie. zapytanie nie jest iloczynem kartezjańskim, zlaczenia tabel sa w warunku where
j. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 31 Pomógł: 0 Dołączył: 26.09.2009 Ostrzeżenie: (0%) ![]() ![]() |
Dziękuję Panowie za szybką odpowiedz, w szczególności Damonsson'owi dziękuję za krótkie i konkretne wyjaśnienie składni, dzieki któremu wiem co i jak
![]() To, że kurs SQL'a w moim przypadku jest konieczny, to na pewno, bo znam tylko podstawy, ze zwyklymi prostymi zapytaniami. Nie mniej jednak dziekuję wszystkim za sugestie. Pozdrawiam serdecznie. PS. Polecacie moze jakies ksiazki, albo cos online, ale tak konkretnie. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 23.06.2025 - 03:46 |