Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL] Pobieranie danych z wielu tabel podczas wykonywania pętli
jagrok
post 3.04.2017, 12:36:38
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 17.03.2008

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


Witajcie ponownie,

Wszystkie kursy które studiuje mówią o pobieraniu danych za pomocą query ale tylko w przypadku jednej tabeli.
Co w przypadku gdy muszę pobrać z większej ilości miejsc dane ale wciąż muszę zastosować pętle while ?

mam fragment kodu który wymaga powtórzenia w pętli


Kod
<div class="cbp-item KATEGORIA">
                        <div class="cbp-caption">
                            <div class="cbp-caption-defaultWrap">
                                <img src="img/works/ZDJECIE.jpg" alt=""/>
                            </div>
                            <div class="cbp-caption-activeWrap">
                                <div class="th-detail">
                                    <div class="cbp-l-caption-alignCenter">
                                        <div class="cbp-l-caption-body">
                                            <div class="cbp-l-grid-projects-title">TYTUŁ</div>
                                            <a href="projects/project1.php" class="cbp-singlePage cbp-l-caption-buttonLeft">więcej</a>
                                            <a href="img/works/helios1.jpg" class="cbp-lightbox cbp-l-caption-buttonRight" data-title="TYTUŁ<br>OPIS">powiększ</a>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>


KATEGORIA - parametr pobierany z tabeli category
ZDJĘCIE - parametr pobierany z tabeli gallery
TYTUŁ - parametr pobierany z tabeli title
OPIS - parametr pobierany z tabeli project

Wszystkie 4 tabele są powiązane ze sobą za pomocą id tabeli kategoria - jednak nie są zrobione relacje w bazie danych.
Za pomocą JOINA jestem w stanie połączyć się z dwiema tabelami naraz i wyświetlić dla nich wspólne cechy dla danego połączenia.
Jak zatem wykonać takie zapytanie do 4 lub większej ilości tabel, lub jak to zrobić inaczej tak żeby było zrobione zgodnie ze sztuką ?

Próbowałem bawić się z relacjami many to many ale napotkałem na kłopoty z powiązaniami.
Czy ktoś podpowie jak to zrealizować poprawnie ?
Go to the top of the page
+Quote Post
nospor
post 3.04.2017, 12:44:11
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Za pomocą JOINA jestem w stanie połączyć się z dwiema tabelami naraz i wyświetlić dla nich wspólne cechy dla danego połączenia.
Nie. Za pomoca JOIN mozesz polaczyc sie z dowolna iloscia tabel a nie tylko dwoma. JOIN mozna uzywac wielokrotnie w jednym zapytaniu i laczyc ze soba kolejne pary tabel


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
jagrok
post 3.04.2017, 13:31:58
Post #3





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 17.03.2008

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


Czyli takie rozwiązanie multiple JOIN pomoże mi zrealizować powyższe zadanie ?
Go to the top of the page
+Quote Post
nospor
post 3.04.2017, 13:55:34
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Moze. Choc osobiscie polecam poczytac o roznicach miedzy JOIN a LEFT JOIN bo mozesz sie przejechac wink.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
jagrok
post 3.04.2017, 14:04:29
Post #5





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 17.03.2008

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


Dziękuje za pomoc, udało mi się osiągnąć to co zamierzałem za pomocą:

  1.  
  2. SELECT portfolio_category.category_name, portfolio_title.title, portfolio_gallery.img, portfolio_project.description
  3. FROM portfolio_category
  4. INNER JOIN portfolio_gallery ON portfolio_category.id=portfolio_gallery.cat_id
  5. INNER JOIN portfolio_title ON portfolio_category.id=portfolio_title.cat_id
  6. INNER JOIN portfolio_project ON portfolio_category.id=portfolio_title.cat_id
  7.  
Go to the top of the page
+Quote Post
nospor
post 3.04.2017, 14:12:27
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Miej tylko na uwadze, ze z INNER JOIN, jak nie bedzie istnial jakis wpis w JOINowanej tabeli, to cale zapytanie nic ci nie zwroci.
Przy LEFT JOIN zwroci wszystko procz danych z tabeli, gdzie nie istnieje zlaczenie. Czesto sie to spotyka wlasnie w galeriach, gdzie masz jakis np. produkt, ktory jeszcze nie ma zdjec.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
jagrok
post 3.04.2017, 14:15:00
Post #7





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 17.03.2008

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


No wlasnie spotkalem sie z problemem ze wyswietla mi podwojnie dane smile.gif
Ciężko to ogarnąć na samym początku przygód
Go to the top of the page
+Quote Post
nospor
post 3.04.2017, 14:16:47
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No jesli tabela zlaczana ma kilka rekordow dla rekordu dolaczanego to tak, dane sie beda powtarzac - dosc logiczne smile.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
jagrok
post 3.04.2017, 14:28:19
Post #9





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 17.03.2008

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


A da się to jakoś wykluczyć ? Bo dodając kolejne wpisy w bazie rzeczy zaczynają mi się multiplikować
Go to the top of the page
+Quote Post
nospor
post 3.04.2017, 14:33:42
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Albo musisz grupowac (GROUP BY) i laczyc dane na poziomie mysql
Albo w php obrabiac te dane zanim zaczniesz wyswietlac.

Ja zazwyczaj robie to drugie



--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
jagrok
post 3.04.2017, 14:37:04
Post #11





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 17.03.2008

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


Czy mogę prosić o szczegóły obróbki tych danych w PHP ?
Go to the top of the page
+Quote Post
nospor
post 3.04.2017, 14:39:20
Post #12





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




http://nospor.pl/grupowanie-wynikow.html


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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: 19.07.2025 - 04:16