Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zapytanie w zapytaniu?
oSa
post
Post #1





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 29.04.2003

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


Tworzę stronę, gdzie w bazie danych przechowuję informacje o artystach i ich produkcjach. Potrzebuję na stronie wyświetlić Artystów, a pod nimi produkcje, które wydali. Wykonując takie zapytanie:


[php:1:95ec50eff5]<?php
$ayt = mysql_query("SELECT * FROM wykonawcy order by nazwa");

while ($b=mysql_fetch_array($ayt))
{
echo "<font size="4"><a href="?d=wykonawcy&wid=$b[id]">$b[nazwa]</a></font><br><br>";
$utw = mysql_query("select * from produkcje where wyk_id='$b[id]'");
while ($c=mysql_fetch_array($utw))

{

echo "<li><a href="?d=produkcje&pid=$c[id]"><i>$b[nazwa] - $c[nazwa]</i></a><br>";
}

}
?>[/php:1:95ec50eff5]


otrzymuje wszystkich artystów ( nawet tych, którzy nie wydali ani jednej płyty ). Jak zapytać się tylko o tych artystów, którzy coś wydali ( no i oczywiście ich wyświetlić ) ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
ins@ne
post
Post #2





Grupa: Zarejestrowani
Postów: 68
Pomógł: 0
Dołączył: 10.07.2003
Skąd: Poznań

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


ok... to powinno byc tak:
[sql:1:b79e529b67]select * from Wykonawcy left outer join Produkcje on Wykonawcy.Id=Produkcje.Wykonawca_id where nazwa not null[/sql:1:b79e529b67]

Glowy w sumie za to nie dam bo left outer joiny zawsze troche "na chybil trafil" robie... ale jak zrobilem sobie analogiczny przyklad u mnie w bazie to zadzialal...

Teoretycznie: polacza sie dwie tabele opierajac sie na Id=Wykonawcy.Id; left outer join spowoduje ze z pierwszej (lewej) tabeli wszystko "przejdzie" laczenie, a z drugiej tylko to co spelnia warunek (Id=Wykonawcy.Id); jesli pierwsza tabela nie bedzie miala swoich odpowiednikow po prawej stronie (czyli artysta nic nie wydal) to te pola zostana wypelnione NULLami; zatem wybieramy jakiekolwiek z tych pol i robimy warunek, ze np. nazwa czy opis czy Produkcje.id nie moze byc NULL...
Go to the top of the page
+Quote Post

Posty w temacie


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: 25.12.2025 - 21:26