Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]Złożone zapytanie do MySQL
Forum PHP.pl > Forum > Przedszkole
qweluke
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 :/
pedro84
  1. GROUP BY id_uzytkownika
qweluke
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 ;/
pedro84
A właściwie, to powinieneś użyć JOIN do pobrania danych z dwóch tabel dwóch tabel.
qweluke
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
pedro84
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.
qweluke
  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
pedro84
Kolego, wiesz jaka jest różnica pomiędzy ` a ' w zapytaniu? Jeśli nie, to poczytaj a się dowiesz winksmiley.jpg
qweluke
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
everth
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)
qweluke
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'
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.