Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL] Jak rozwiązać problem zapytania do bazy
czuwaj
post 13.03.2013, 21:33:53
Post #1





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 15.10.2012
Skąd: Przemyśl

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


Witam, mam pewien problem. Mam dwie tabele w bazie sub i action chcę otrzymać zapytanie dzięki któremy zadziała mi ten kod. Z zapytaniem chodzi o to, że gdy w tabeli sub id jest równe id w tabeli action to zostanie pobrany rekord z bazy. Nie miałem zbytnio pomysłów jak to zrobić więc pomyślałem nad rozwiązaniem
  1. $q = mysql_query("SELECT * FROM sub WHERE people='$id_login';");
  2. $ciag_sub = null;
  3. while($my_sub = mysql_fetch_assoc($q)){
  4. $ciag = ' people=\''.$my_sub['subskrypcja'].'\' AND ';
  5. $ciag_sub = $ciag_sub.$ciag;
  6. }
  7. // echo $ciag_sub; wynik to "people=28 AND people=27 AND people=26 AND people=25 AND people=24 AND people=23 AND people=22 AND people=21 AND people=19 AND "
  8.  
  9.  
  10. $wynik = mysql_query("SELECT * FROM action WHERE ".$ciag_sub." people='$id_login' ORDER BY id DESC LIMIT ".$postnumbers." OFFSET ".$offset);
  11.  

ale nie działa mi ten sposób czy są jakieś inne możliwości rozwiązania tego problemu ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
webmaniak
post 13.03.2013, 22:09:19
Post #2





Grupa: Zarejestrowani
Postów: 371
Pomógł: 30
Dołączył: 14.04.2010

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


Rozwiązaniem jest tutaj join. zapytanie wygląda tak:
  1. SELECT sub.*, action.* FROM sub JOIN action ON sub.id= action.id

Możesz też dodać warunek WHERE. Poczytaj o join bo jest tego mnóstwo, a przedstawiłem najprostsze użycie :-)

Ten post edytował webmaniak 13.03.2013, 22:10:37


--------------------
Pomogłem - kliknij , wprowadziłem w błąd - poinformuj niżej lub na pm.
Go to the top of the page
+Quote Post
sebastian.rozmus
post 13.03.2013, 22:14:30
Post #3





Grupa: Zarejestrowani
Postów: 48
Pomógł: 12
Dołączył: 7.03.2012

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


  1. SELECT * FROM `sub` LEFT JOIN `action` ON `sub`.`people` = `action`.`id`
Go to the top of the page
+Quote Post
czuwaj
post 13.03.2013, 22:31:49
Post #4





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 15.10.2012
Skąd: Przemyśl

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


moje zapytanie wygląda tak
  1. $wynik = mysql_query("SELECT * FROM `sub` LEFT JOIN `action` ON `sub`.`people` = `action`.`people` ORDER BY id DESC LIMIT ".$postnumbers." OFFSET ".$offset);


pojawia sie błąd

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\xampp\h[...]

czytałem ale nie zabardzo wiem jak rozwiązać ten problem
Go to the top of the page
+Quote Post
webmaniak
post 13.03.2013, 22:33:02
Post #5





Grupa: Zarejestrowani
Postów: 371
Pomógł: 30
Dołączył: 14.04.2010

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


Left join zwróci rekord jeśli nie będzie spełniony warunek w drugiej tabeli, lepsze jest tu join- wg opisu autora :-)
Mój pusty był do wypowiedzi sebastian.rozmus.
Co do tego błędu to pokaż co masz później. Poza tym spróbuj w sql wykonać to zapytanie, zobacz czy coś zwraca.

Ten post edytował webmaniak 13.03.2013, 22:36:52


--------------------
Pomogłem - kliknij , wprowadziłem w błąd - poinformuj niżej lub na pm.
Go to the top of the page
+Quote Post
mmmmmmm
post 13.03.2013, 22:34:17
Post #6





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


Jakbyś dał mysql_error(), to byś zobaczył 'ambigous field id' smile.gif
w ORDRR BY nie podajesz wg jakiego id ma sortować. Domyzlam się, ze jest w oby tabelach.
Go to the top of the page
+Quote Post
czuwaj
post 13.03.2013, 22:46:36
Post #7





Grupa: Zarejestrowani
Postów: 22
Pomógł: 0
Dołączył: 15.10.2012
Skąd: Przemyśl

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


rozwiązaniem problemu jest ORDER BY action.id DESC

zwraca mi ten zam rekord po kilka razy
co może być nie tak?
Go to the top of the page
+Quote Post
webmaniak
post 13.03.2013, 22:54:40
Post #8





Grupa: Zarejestrowani
Postów: 371
Pomógł: 30
Dołączył: 14.04.2010

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


A co używasz left join czy sam join? Możeszteż dodać distinct:
sql.dawida.pl/master.htm?http://sql.dawida.pl/distinct.htm

Ten post edytował webmaniak 13.03.2013, 22:57:10


--------------------
Pomogłem - kliknij , wprowadziłem w błąd - poinformuj niżej lub na pm.
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: 24.07.2025 - 20:05