Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Wyciaganie danych z klku tabel.
Croos22
post 6.03.2011, 08:56:56
Post #1





Grupa: Zarejestrowani
Postów: 316
Pomógł: 4
Dołączył: 22.03.2010

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


Witam.

Czy jest możliwość aby to zapytanie wyciągało dane z jeszcze jednej tabelki?

  1. $query = mysql_query("SELECT * FROM `wykonawcy` WHERE wykonawca_id='{$_GET['id']}'");
  2. while ($wykonawcy = mysql_fetch_array($query)) {
  3.  
  4. }


Ten post edytował Croos22 6.03.2011, 08:57:29
Go to the top of the page
+Quote Post
wookieb
post 6.03.2011, 09:27:44
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




A czy jest możliwość abyś zajrzał go Kursu SQL? JOIN


--------------------
Go to the top of the page
+Quote Post
Croos22
post 6.03.2011, 09:47:33
Post #3





Grupa: Zarejestrowani
Postów: 316
Pomógł: 4
Dołączył: 22.03.2010

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


Czytałem kiedyś coś na ten temat. Powstało mi takie coś ale wyrzuca błędy:

  1. SELECT * FROM wykonawcy
  2. JOIN filmy ON
  3. wykonawcy.wykonawca_id, wykonawcy.wykonawca, wykonawcy.informacja AND filmy.film_id, filmy.link_filmu, filmy.user_login, filmy.nazwa_filmu, filmy.id_wykonawcy
  4. WHERE wykonawcy.wykonawca_id = '{$_GET['id']}';


Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in ... on line 8

Ten post edytował Croos22 6.03.2011, 09:51:13
Go to the top of the page
+Quote Post
kinder
post 6.03.2011, 10:26:11
Post #4





Grupa: Zarejestrowani
Postów: 39
Pomógł: 2
Dołączył: 15.03.2010

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


Ma byc tak
  1. SELECT wykonawcy.wykonawca, wykonawcy.informacja, filmy.film_id, filmy.link_filmu, filmy.user_login, filmy.nazwa_filmu, filmy.wykonawca_id FROM wykonawcy
  2. inner JOIN filmy ON
  3. wykonawcy.wykonawca_id = filmy.wykonawca_id
  4. WHERE wykonawcy.wykonawca_id = '{$_GET['id']}';


jak uzywasz joina to musisz podac warunek łączenia tabel w tym przypadku

  1. wykonawcy.wykonawca_id = filmy.wykonawca_id


Chyba masz zle baze zaimplementowana, bo widzialem ze masz filmy.id_wykonawcy a powinno byc filmy.wykonawca_id
to powinienen byc klucz głowny, i warunek łączenia tabel.

Ten post edytował kinder 6.03.2011, 10:31:18
Go to the top of the page
+Quote Post
wookieb
post 6.03.2011, 10:26:33
Post #5





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




http://dev.mysql.com/doc/refman/5.0/en/join.html Na dole przykłady
http://nexik.jogger.pl/2007/12/14/szybki-kurs-sql-cz-iv/


--------------------
Go to the top of the page
+Quote Post
Croos22
post 6.03.2011, 10:57:48
Post #6





Grupa: Zarejestrowani
Postów: 316
Pomógł: 4
Dołączył: 22.03.2010

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


Cytat(kinder @ 6.03.2011, 10:26:11 ) *
Chyba masz zle baze zaimplementowana, bo widzialem ze masz filmy.id_wykonawcy a powinno byc filmy.wykonawca_id
to powinienen byc klucz głowny, i warunek łączenia tabel.


Celowo tak zrobiłem. Przechowuje tam inny identyfikator.

A jakbym chciał wrzucić w echo zawartość któregoś z pól? Pierwszy raz mam styczność z łączeniem tabel.

  1. $query = mysql_query("SELECT wykonawcy.wykonawca, wykonawcy.informacja, filmy.film_id, filmy.link_filmu, filmy.user_login, filmy.nazwa_filmu, filmy.wykonawca_id FROM wykonawcy
  2. inner JOIN filmy ON
  3. wykonawcy.wykonawca_id = filmy.wykonawca_id
  4. WHERE wykonawcy.wykonawca_id = '{$_GET['id']}';
  5. ");
  6. while ($wykonawcy = mysql_fetch_array( $query)) {
  7. echo ?;
  8. }


Dlaczego tak jest wykonawcy.wykonawca_id = filmy.wykonawca_id? Mi zależy na tym aby wyciągnąć tylko dane nic nie chciałem łączyć.
Go to the top of the page
+Quote Post
wookieb
post 6.03.2011, 11:12:06
Post #7





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Sprawdź co zawiera twoje zapytanie.
Podstawy debugowania
  1. var_dump($query);


Oraz jaki błąd dostajesz
  1. mysql_query($query) or die(mysql_error());

Temat: Jak poprawnie zadac pytanie


--------------------
Go to the top of the page
+Quote Post
Croos22
post 6.03.2011, 11:28:19
Post #8





Grupa: Zarejestrowani
Postów: 316
Pomógł: 4
Dołączył: 22.03.2010

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


  1. var_dump($query);

bool(false)

  1. mysql_query($query) or die(mysql_error());

Query was empty

W bazie znajdują się rekordy więc dlaczego pisze, że jest pusta?
Go to the top of the page
+Quote Post
wookieb
post 6.03.2011, 11:32:42
Post #9





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




  1. $query = "SELECT wykonawcy.wykonawca, wykonawcy.informacja, filmy.film_id, filmy.link_filmu, filmy.user_login, filmy.nazwa_filmu, filmy.wykonawca_id FROM wykonawcy
  2. inner JOIN filmy ON
  3. wykonawcy.wykonawca_id = filmy.wykonawca_id
  4. WHERE wykonawcy.wykonawca_id = '".$_GET['id']."'
  5. ";
  6. var_dump($query);
  7. $query = mysql_query($query) or die(mysql_error());
  8.  


--------------------
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: 14.06.2025 - 17:44