Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]+[mysql] Rekordy z tabeli "A" sortowane wg rekordu z tabeli "B"[rozwiązany]
Forum PHP.pl > Forum > Bazy danych > MySQL
miccom
Witam. Mam pytanie.
Moje zapytanie do bazy danych wygląda następująco:


  1. $zapytanie="SELECT * FROM `oferta` WHERE `data`='$data' AND `region`='$region' AND `kategoria`='$kategoria' ";



Ale wyniki chciałbym pokazać posortowane malejąco według rekordu z innej tabeli. Jak wykonać zapytanie?
Druga tabela to
`komentarze` a rekord wg którego chcę posortować to `pkt`.
Jak połączyć te dwa zapytania?
Druga część to myślę że : ORDER BY `pkt` DESC"; ale co dalej i jak sklecić owe zapytanie?

Proszę o pomoc.
dr_bonzo
polacz JOINem z ta druga tabela i po jej polu sortuj
miccom
Cytat(dr_bonzo @ 14.02.2008, 22:47:34 ) *
polacz JOINem z ta druga tabela i po jej polu sortuj


No tak, ale jak?
Mam coś takiego:

Jest tabela oferta z rekordami poniżej:

  1. `username`,
  2. `data` ,
  3. `region`,
  4. `kategoria`,

Z tabeli oferta chcę wyjąć rekordy `username` WHERE data='$data' AND region='$region' AND kategoria='$kategoria' //gdzie zmienne są przekazane z formularza


a sortować chcę wg rekordu `pkt` w tabeli user(gdzie ilość punktów`pkt`usera `username`z tabeli user jest przypisana do tego samego `username` z tabeli oferta
  1. `username`
  2. `kategoria`,
  3. `region` ,
  4. `nazwa`,
  5. `opis`,
  6. `tel`,
  7. `kom`,
  8. `fax`,
  9. `email`,
  10. `web`,
  11. `pkt`,
  12. `haslo`,
  13. `data_rejstacji`,
  14. `stan konta`,


I myślę aby połączyć to przez JOIN, ale jak?? Już mam mętlik w głowie. Myślałem o czymś takim- ale nie działa;/


  1. "SELECT oferta.data, oferta.username, user.username, user.pkt FROM oferta JOIN user ON oferta.username = user.username WHERE `data`='$data' AND `region`='$region' AND `kategoria`='$kategoria' ORDER BY `pkt` ASC";
Łukasz O.
  1. SELECT
  2. o.DATA,
  3. u.username
  4.  
  5. FROM 'oferta' AS o
  6. JOIN 'user' AS u USING(username)
  7.  
  8. WHERE o.DATA = '$data' AND o.region = '$region' AND o.kategoria = '$kategoria'
  9.  
  10. ORDER BY u.pkt DESC
miccom
Witam.
Dziękuję za odpowiedzi- ale wywala mi cały czas błąd:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/miccom/public_html/serwis/szukajdalej.php on line 85
  1. $dd = $_POST['dzien'];
  2. $mm = $_POST['miesiac'];
  3. $rr = $_POST['rok'];
  4. $kategoria = $_POST['kategoria'];
  5.  
  6.  
  7. $data = $rr."-".$mm."-".$dd;
  8.  
  9. IF($_POST['region']=='cała Polska')
  10. {
  11. $zapytanie="SELECT o.username FROM 'oferta' AS o JOIN 'user' AS u USING(username) WHERE o.data = '$data' AND o.kategoria = '$kategoria' ORDER BY u.pkt DESC ";
  12. }
  13. else
  14. {
  15. $region = $_POST['region'];
  16.  
  17. $zapytanie="SELECT o.username FROM 'oferta' AS o JOIN 'user' AS u USING(username) WHERE o.data = '$data' AND o.region = '$region' AND o.kategoria = '$kategoria' ORDER BY u.pkt DESC ";
  18. }
  19. $region = $_POST['region'];
  20.  
  21. $wykonaj=mysql_query($zapytanie);
  22.  
  23. while($wiersz=mysql_fetch_array($wykonaj))//linia nr. 85


Chcę uzyskać użytkowników `username` z tabeli 'oferta' WHERE o.data = '$data' AND o.kategoria = '$kategoria' .....itd,itd. z tabeli 'oferta' posegregowane wg ilości punktów `pkt` z tabeli 'user'. Trochę skomplikowane- ale nadal proszę o pomoc.
nospor
Ale nie kopiuj bezmyslnie. Nazwa tabel nie bierze sie w apostrofy. Jak juz cos to w `.
` to nie to samo co '
miccom
Ok. Działa.
Dziękuję wszystkim uczestniczącym, którzy pomogli mi rozwiązać ten problem.
Dla innych szukających- oto zapytanie poprawne:

  1. $zapytanie="SELECT * FROM `oferta` AS o JOIN `user` AS u USING(username) WHERE o.data = '$data' AND o.region = '$region' AND o.kategoria = '$kategoria' ORDER BY u.pkt DESC ";

Pozdrawiam. miccom
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.