Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL]Złożone zapytanie do MySQL
qweluke
post 26.07.2010, 09:58:01
Post #1





Grupa: Zarejestrowani
Postów: 87
Pomógł: 0
Dołączył: 25.03.2010
Skąd: Radom

Ostrzeżenie: (10%)
X----


Panowie,

ucze sie PHP od kilku tygodni i cwicze na roznych przykladach.
Teraz chce zrobic cos na wzor grafiku zajec/pracy tylko mam problem ktory uniemozliwia mi przejsc dalej z nauka a ktorego nie potrafie rozwiazac


mam taka tabele:
http://ifotos.pl/img/baza_wpwqnx.png

zrobilem zapytanie
  1. SELECT * FROM (SELECT * FROM `grafik`, `uzytkownicy` WHERE grafik.id_uzytkownika=uzytkownicy.id ORDER BY grafik.id_grafiku DESC LIMIT 6) AS tabela ORDER BY nazwisko ASC

Limit 6 bo jest narazie 6 uzytkownikow

Zapytanie dziala prawie tak jakbym chcial, prawie poniewaz zwraca mi cos takiego
http://ifotos.pl/img/1wpsprx_wpsrpe.png

Jak widac, zwraca mi dwa razy wartosc dla uzytkownika o ID6 a uzytkownika o ID1 pomija :/

Jezeli wpisze w zapytanie LIMIT 7 (o 1 wiecej niz uzytkwonikow w bazie) wyswietli mi:
http://ifotos.pl/img/2wpsprn_wpsrpq.png

wyswietla uzytkownika o ID1 ale... dalej wyswietla 2 wpisy dla uzytkownika o ID6

Prosze was o pomoc bo nie wiem jak to zrobic :/

Ten post edytował qweluke 26.07.2010, 11:40:23
Go to the top of the page
+Quote Post
pedro84
post 26.07.2010, 10:30:22
Post #2





Grupa: Nieautoryzowani
Postów: 2 249
Pomógł: 305
Dołączył: 2.10.2006

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


  1. GROUP BY id_uzytkownika


--------------------
Google knows the answer...
Go to the top of the page
+Quote Post
qweluke
post 26.07.2010, 10:44:28
Post #3





Grupa: Zarejestrowani
Postów: 87
Pomógł: 0
Dołączył: 25.03.2010
Skąd: Radom

Ostrzeżenie: (10%)
X----


ale jesli wpisze to

  1. SELECT * FROM (SELECT * FROM `grafik`, `uzytkownicy` WHERE grafik.id_uzytkownika=uzytkownicy.id GROUP BY id_uzytkownika ORDER BY grafik.id_grafiku DESC LIMIT 6) AS tabela ORDER BY nazwisko ASC


to wyswietla mi najstarsze wpisy (o najmniejszym id_grafiku dla uzytkownika) a powinno najwieksze ;/
Go to the top of the page
+Quote Post
pedro84
post 26.07.2010, 10:50:34
Post #4





Grupa: Nieautoryzowani
Postów: 2 249
Pomógł: 305
Dołączył: 2.10.2006

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


A właściwie, to powinieneś użyć JOIN do pobrania danych z dwóch tabel dwóch tabel.


--------------------
Google knows the answer...
Go to the top of the page
+Quote Post
qweluke
post 26.07.2010, 11:06:46
Post #5





Grupa: Zarejestrowani
Postów: 87
Pomógł: 0
Dołączył: 25.03.2010
Skąd: Radom

Ostrzeżenie: (10%)
X----


a mozesz mi kolego pomoc stworzyc to zapytanie? bo walcze z tym od kilku dni i nie potrafie tego zrobic


  1. SELECT * FROM 'grafik' LEFTJOIN 'uzytkownicy' ON grafik.id_uzytkownika=uzytkownicy.id_uzytkownika GROUP BY uzytkowicy.id_uzytkownia ORDER BY uzytkowicy.nazwisko ACS


Ten post edytował qweluke 26.07.2010, 11:07:21
Go to the top of the page
+Quote Post
pedro84
post 26.07.2010, 11:11:53
Post #6





Grupa: Nieautoryzowani
Postów: 2 249
Pomógł: 305
Dołączył: 2.10.2006

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


Jakiś błąd masz?

Jak już coś to:
  1. SELECT * FROM 'grafik' LEFT JOIN 'uzytkownicy' ON grafik.id_uzytkownika=uzytkownicy.id_uzytkownika GROUP BY uzytkowicy.id_uzytkownia ORDER BY uzytkowicy.nazwisko ASC

patrz jakie literówki walisz.


--------------------
Google knows the answer...
Go to the top of the page
+Quote Post
qweluke
post 26.07.2010, 11:13:21
Post #7





Grupa: Zarejestrowani
Postów: 87
Pomógł: 0
Dołączył: 25.03.2010
Skąd: Radom

Ostrzeżenie: (10%)
X----


  1. #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''grafik' LEFT JOIN 'uzytkownicy' ON grafik.id_uzytkownika=uzytkownicy.id_uzytkow' at line 1
Go to the top of the page
+Quote Post
pedro84
post 26.07.2010, 11:22:53
Post #8





Grupa: Nieautoryzowani
Postów: 2 249
Pomógł: 305
Dołączył: 2.10.2006

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


Kolego, wiesz jaka jest różnica pomiędzy ` a ' w zapytaniu? Jeśli nie, to poczytaj a się dowiesz winksmiley.jpg


--------------------
Google knows the answer...
Go to the top of the page
+Quote Post
qweluke
post 26.07.2010, 11:38:00
Post #9





Grupa: Zarejestrowani
Postów: 87
Pomógł: 0
Dołączył: 25.03.2010
Skąd: Radom

Ostrzeżenie: (10%)
X----


faktycznie, moj blad biggrin.gif

`` dla mysql a '' dla php tongue.gif z rozpedu zle wpisalem

poprawnie powinno byc

  1. SELECT * FROM `grafik` LEFT JOIN `uzytkownicy` ON grafik.id_uzytkownika=uzytkownicy.id GROUP BY uzytkownicy.id ORDER BY uzytkownicy.nazwisko ASC


Ale to dalej nie działa tak jak powinno bo zwraca mi takie wartosci

http://ifotos.pl/img/blad2_wpshas.png

czyli wyciaga mi te na czrwono zaznaczone http://ifotos.pl/img/FireShot-_wpshqq.png a ja chce te niebieskie gdzie dla konkretnego uzytkownika id_grafiku jest najwieksze

trzeba by jakos te zapytanei polaczyc z
  1. SELECT id_uzytkownika, MAX(id_grafiku)
  2. FROM `grafik`
  3. GROUP BY id_uzytkownika


Ten post edytował qweluke 26.07.2010, 12:14:47
Go to the top of the page
+Quote Post
everth
post 26.07.2010, 12:30:52
Post #10





Grupa: Zarejestrowani
Postów: 782
Pomógł: 153
Dołączył: 21.07.2010

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


Coś złego jest z tym dodatkowym rekordem użytkownika o ID 6. Ale to nieważne. Spróbuj tak:
  1. SELECT * FROM (SELECT * FROM `grafik` LEFT JOIN `uzytkownicy` ON grafik.id_uzytkownika=uzytkownicy.id WHERE grafik.rok=0 GROUP BY uzytkownicy.id ORDER BY grafik.id_grafiku DESC LIMIT 0,6) ORDER BY uzytkownicy.nazwisko ASC

Ale i tak coś jest nie tak z tymi tabelami (w sensie projektu). Najlepiej pokaż je osobno (bez wrażliwych kolumn - tabele grafik i uzytkownicy)


--------------------
Już mi się ani wiedzieć, ani tym bardziej myśleć nie chce.
[Think different]!
Go to the top of the page
+Quote Post
qweluke
post 26.07.2010, 12:52:46
Post #11





Grupa: Zarejestrowani
Postów: 87
Pomógł: 0
Dołączył: 25.03.2010
Skąd: Radom

Ostrzeżenie: (10%)
X----


Cytat(everth @ 26.07.2010, 13:30:52 ) *
Ale i tak coś jest nie tak z tymi tabelami (w sensie projektu). Najlepiej pokaż je osobno (bez wrażliwych kolumn - tabele grafik i uzytkownicy)


Wielce prawdopodobne bo dopiero co sie ucze :}

grafik: http://ifotos.pl/img/grafik_wpsnpq.png | http://ifotos.pl/img/graf_wpsnhh.png
uzytkownicy: http://ifotos.pl/img/users_wpsnhx.png | http://ifotos.pl/img/user_wpsnhn.png

a twoje zapytanie wyrzuca blad:

  1. #1248 - Every derived table must have its own alias


gdy zmianilem je na

  1. SELECT * FROM (SELECT * FROM `grafik` LEFT JOIN `uzytkownicy` ON grafik.id_uzytkownika=uzytkownicy.id WHERE grafik.rok=0 GROUP BY uzytkownicy.id ORDER BY grafik.id_grafiku DESC LIMIT 0,6) [b]AS tablica[/b] ORDER BY uzytkownicy.nazwisko ASC

#1054 - Unknown column 'uzytkownicy.nazwisko' in 'order clause'
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: 8.07.2025 - 21:42