Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Może ktoś rozszyfrować? SELECT a.name ... proszę o pomoc, proszę o pomoc w rozszyfrowaniu, składni
konfeusz
post 26.06.2012, 16:04:18
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 wink.gif Będę bardzo wdzięczny, a napewno taka odpowiedz pomoże nie tylko mi, a i innym jeszcze nie douczonym.
Pozdrawiam serdecznie.
Go to the top of the page
+Quote Post
alegorn
post 26.06.2012, 16:11:32
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.
Go to the top of the page
+Quote Post
mmmmmmm
post 26.06.2012, 18:13:06
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
Go to the top of the page
+Quote Post
Damonsson
post 26.06.2012, 18:52:34
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
Go to the top of the page
+Quote Post
alegorn
post 27.06.2012, 09:50:25
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.
Go to the top of the page
+Quote Post
konfeusz
post 29.06.2012, 11:57:25
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 smile.gif.

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.
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: 23.06.2025 - 03:46