Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> MySQL - dane z dwóch tabel zwracane w jednym wierszu?
pozmu
post
Post #1





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 17.01.2003

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


Witam, mam problem. Oto on: - mam dwie tabelki podobne do tych poniżej:
[php:1:3c6b7fddb0]
table p
---------------------
id name
1 xxxx
2 zzzzz


table i
---------------------
imgid pid photo(blob)
1 1
2 2
3 1
4 1
5 1
6 2
[/php:1:3c6b7fddb0]
Niby fajnie. Ale teraz chce wyciągnąc listę produktów (tabela p) i przypisanych do nich zdjęć (tabela i - relacje opisuje pid - czyli odwołanie do id produktu). Kombinowałem wiele, ale jedyne, co mi się udaje uzyskać to coś w stylu:
[php:1:3c6b7fddb0]
id name imgid
1 xxxx 1
1 xxxx 3
1 xxxx 4
1 xxxx 5
2 zzzzz 2
2 zzzzz 6
[/php:1:3c6b7fddb0]

Wszystko jest, ale produkty się powtarzają tyle razy, ile jest do nich fotek... Zamiast tego chciałbym uzyskać coś w stylu:

[php:1:3c6b7fddb0]
id name imgid[1] imgid[2] imgid[3] imgid[4]
1 xxxx 1 3 4 5
2 zzzzz 2 6
[/php:1:3c6b7fddb0]
Czy to możliwe w Mysql 3.x (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ? Z góry wielkie dzięki za pomoc.
Go to the top of the page
+Quote Post
spenalzo
post
Post #2





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

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


A co za problem wrzucić to do tablicy w php, której kluczem bedą ID produktów, a wartością tablica z ID fotek?
Go to the top of the page
+Quote Post
pozmu
post
Post #3





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 17.01.2003

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


Cytat
A co za problem wrzucić to do tablicy w php, której kluczem bedą ID produktów, a wartością tablica z ID fotek?


No nie problem, ale to:
a) nieelegancko
(IMG:http://forum.php.pl/style_emoticons/default/cool.gif) przy większej ilości danych w tabeli p byłoby to bardzo nieefektywne (wyciąganie wszystkiego x razy)

Na IRC szanowny Pan Przewodniczący napisał, że kolega Spenalzo jest alfą i omegą jeśli chodzi o SQL (ja po przejrzeniu tego działu forum też się do tego przychylam).... więc pytanie: da się to zrobić w mysqlu czy nie? Bo jak nie to będę spokojnie kombinował z php właśnie albo po prostu dam dwa zapytania.

Dzięki (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
I wesołych świąt dla wszystkich z forum i ekipy php.pl.
Go to the top of the page
+Quote Post
spenalzo
post
Post #4





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

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


Ale dlaczego wiele razy? Możesz jednym zapytaniem wyciągnąć:
[sql:1:3c15ad6c77]select p.id AS pid, f.id AS fid from produkty p left join foto f on (p.id=f.pid)[/sql:1:3c15ad6c77]
a w php
[php:1:3c15ad6c77]<?php
$q=mysql_query("...");
while($t=mysql_fetch_array($q))
{
$prod[$t["pid"]][]=$t["fid"];
}
print_r($prod);
?>[/php:1:3c15ad6c77]
nie sprawdzałem czy działa, ale powinno...
Go to the top of the page
+Quote Post
pozmu
post
Post #5





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 17.01.2003

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


Cytat
Ale dlaczego wiele razy? Możesz jednym zapytaniem wyciągnąć:


Jasne, jasne, ale takie zapytanie nie jest najlepszym rozwiązaniem - fakt, w tym przypadku jest w porządku i można go od biedy, czyli w przypadku, gdy inne nie istnieje, użyć i wszystko będzie działać jak należy. Tylko czy naprawdę nie da się tego zrobić inaczej, na poziomie bazy?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) - przy większej liczbie rekordów z tabeli p, czy ich dużym rozmiarze to nie będzie zbyt efektywne.

Cytat
nie sprawdzałem czy działa, ale powinno...

Działa bezproblemowo.
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: 15.09.2025 - 05:05