Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL]Łączenie dwóch tabel
eurosoft
post
Post #1





Grupa: Zarejestrowani
Postów: 179
Pomógł: 0
Dołączył: 5.11.2010

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


Witam,
jestem raczkującym w temacie SQL, proszę o podpowiedź w jaki sposób mogę wyświetlić na ekranie dane z dwóch tabel w odpowiedniej kolejności kolumn.

Struktura baz wygląda tak:

- TABELA SHOT -
id_shot
id_book
animal
rodzaj_animal
ilosc
ilosc_shot

- TABELA BOOK -
id_book
imie
start
end

zapytanie powinno agregować następujący wynik:
book.id_book | book.imie | book.start | shot.animal | shot.rodzaj_animal | shot.ilosc

dziękuję za wyrozumiałość i podpoweiedź

Pozdrawiam
Marcin
Go to the top of the page
+Quote Post
motyl-pl
post
Post #2





Grupa: Zarejestrowani
Postów: 294
Pomógł: 31
Dołączył: 2.04.2010

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


  1. SELECT book.id_book, book.imie, book.start, shot.animal, shot.rodzaj_animal, shot.ilosc
  2. FROM book
  3. LEFT JOIN shot
  4. ON book.id_book=shoot.id_book


W ten deseń jakoś więcej masz tu:
http://www.w3schools.com/sql/sql_join_left.asp
Go to the top of the page
+Quote Post
sadistic_son
post
Post #3





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


  1. SELECT book.id_book , book.imie , book.start , shot.animal , shot.rodzaj_animal , shot.ilosc FROM book, shot WHERE shot.id_book = book.id_book
Go to the top of the page
+Quote Post
eurosoft
post
Post #4





Grupa: Zarejestrowani
Postów: 179
Pomógł: 0
Dołączył: 5.11.2010

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


Cytat(motyl-pl @ 5.11.2010, 11:55:15 ) *
  1. SELECT book.id_book, book.imie, book.start, shot.animal, shot.rodzaj_animal, shot.ilosc
  2. FROM book
  3. LEFT JOIN shot
  4. ON book.id_book=shoot.id_book


W ten deseń jakoś więcej masz tu:
http://www.w3schools.com/sql/sql_join_left.asp


Dzięki serdeczne.
Mam jeszcze jedno pytanie, w tablicy shot nie wszystkie pola są z wartościami, niektóre są puste, jak sprawić aby były również wyświetlane w tabeli. Teraz mam plamy a chciałym kratki bez wartości.

dzięki raz jeszcze
Go to the top of the page
+Quote Post
motyl-pl
post
Post #5





Grupa: Zarejestrowani
Postów: 294
Pomógł: 31
Dołączył: 2.04.2010

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


  1. if($pobrane['przyklad'] == "") {
  2. echo " ";
  3. }
Go to the top of the page
+Quote Post
eurosoft
post
Post #6





Grupa: Zarejestrowani
Postów: 179
Pomógł: 0
Dołączył: 5.11.2010

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


zapytanie działa poprawnie, ale niestety tylko na pierwszej stronie (mam zastosowana paginację stron) na kolejnych stronach, dzieją się dziwne rzeczy. Jeśli na pierwszej stronie w rekordach tabeli nr 1 i 4 doklejone zostały właściwe kolumny to na stronie drugiej , trzeciej itd w rekordach 1 i 4 są te same wartości.....:-( co mogłem skopać...?

  1. $sql = "SELECT book.id_book, book.imie_nazwisko, book.start_pol, shot.animals, shot.ilosc, shot.ilosc_shot, shot.login
  2. FROM book LEFT JOIN shot ON $tabela.id_book=$tabela1.id_book";



TX

Cytat(motyl-pl @ 6.11.2010, 00:13:14 ) *
  1. if($pobrane['przyklad'] == "") {
  2. echo " ";
  3. }



kurczę a tak dokładniej co z tym zrobić..... (IMG:style_emoticons/default/sad.gif)

Ten post edytował eurosoft 7.11.2010, 23:33:23
Go to the top of the page
+Quote Post
CuteOne
post
Post #7





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


Poczytaj jak używać paginacji (IMG:style_emoticons/default/smile.gif)

$start = ($nr_strony-1) * $max_ilosc_wynikow;
$end = $start + $max_ilosc_wynikow;

dodaj $start i $end do zapytania i gotowe

Cytat
kurczę a tak dokładniej co z tym zrobić.....

wstaw to do pętli wyświetlającej wyniki. jeżeli dany wynik jest pusty nie zrobi ci się "plama" ponieważ wstawiony został znak [& nbsp ;  to spacja]

Ten post edytował CuteOne 8.11.2010, 07:04:48
Go to the top of the page
+Quote Post
eurosoft
post
Post #8





Grupa: Zarejestrowani
Postów: 179
Pomógł: 0
Dołączył: 5.11.2010

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


Cytat(CuteOne @ 8.11.2010, 07:02:48 ) *
Poczytaj jak używać paginacji (IMG:style_emoticons/default/smile.gif)

$start = ($nr_strony-1) * $max_ilosc_wynikow;
$end = $start + $max_ilosc_wynikow;

dodaj $start i $end do zapytania i gotowe


wstaw to do pętli wyświetlającej wyniki. jeżeli dany wynik jest pusty nie zrobi ci się "plama" ponieważ wstawiony został znak [& nbsp ;  to spacja]


Jeśli chodzi o paginację to działa mi dobrze, problem polega na tym iż zapytanie:
  1. $sql1 = "SELECT book.id_book, book.imie_nazwisko, book.start_pol, shot.animals, shot.ilosc, shot.ilosc_shot, shot.login
  2. FROM book LEFT JOIN shot ON $tabela.id_book=$tabela1.id_book";

powinno łączyć pola o tym samym Id_book z dwóch tabel a łączy mi po nr rekordów z tabeli - jeśli na pierwszej stronie mam 15 rekordów w tabeli a doklejone są w 1 i 3 rekordzie to po przejściu do drógiej strony tabeli TE SAME doklejone rokordy są znów w 1 i 3 rekordzie i z tym nie mogę sobie poradzić. Może źle wcześniej to opisałem..

Ten post edytował eurosoft 8.11.2010, 08:22:02
Go to the top of the page
+Quote Post
CuteOne
post
Post #9





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


A GDZIE MAJĄ BYĆ DOKLEJANE?? chcesz podczepić shot o id 3 do book o id 9?? pomyśl chwilkę.. przeczytaj starannie to co napisałem w poprzednim poście zwłaszcza część o wpisaniu czegoś magicznego do zapytania.

ps. mała podpowiedź WHERE id > start and id<end

Ten post edytował CuteOne 8.11.2010, 08:47:38
Go to the top of the page
+Quote Post
eurosoft
post
Post #10





Grupa: Zarejestrowani
Postów: 179
Pomógł: 0
Dołączył: 5.11.2010

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


Cytat(CuteOne @ 8.11.2010, 08:46:43 ) *
A GDZIE MAJĄ BYĆ DOKLEJANE?? chcesz podczepić shot o id 3 do book o id 9?? pomyśl chwilkę.. przeczytaj starannie to co napisałem w poprzednim poście zwłaszcza część o wpisaniu czegoś magicznego do zapytania.

ps. mała podpowiedź WHERE id > start and id<end


Kurczę właśnie o to mi chodzi że nie chcę aby mi podczepiał ID_Shot 3 do ID_book 6 a właśnie tak sie zachowuje........
Czy paginacja ma coś wspólnego z porównywaniem rekordów po ich wewnętrznych ID?
Przepraszam, może to pytania trywialne, ale proszę o wyrozumiałość..

Cytat(eurosoft @ 5.11.2010, 11:39:16 ) *
Witam,
jestem raczkującym w temacie SQL, proszę o podpowiedź w jaki sposób mogę wyświetlić na ekranie dane z dwóch tabel w odpowiedniej kolejności kolumn.

Struktura baz wygląda tak:

- TABELA SHOT -
id_shot
id_book
animal
rodzaj_animal
ilosc
ilosc_shot

- TABELA BOOK -
id_book
imie
start
end

zapytanie powinno agregować następujący wynik:
book.id_book | book.imie | book.start | shot.animal | shot.rodzaj_animal | shot.ilosc

dziękuję za wyrozumiałość i podpoweiedź

Pozdrawiam
Marcin

OK, wszystko działa, ale mam jeszcze problem z tym if-em....
Go to the top of the page
+Quote Post
CuteOne
post
Post #11





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


wrzuć tutaj kod, którym pobierasz i wyświetlasz dane [chodzi o pętle]
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 19:24