cinnek
29.12.2004, 20:28:22
Witam
Mam 2 tabele połaczone jakimś ID i chodzi mi o to aby wyświetlić wszystkie rekordy z pierwszej tabeli takie których ID nie znajduje się w drugiej tabeli czyli np
tabela jeden:
ID | imie
1 | marcin
2 | jola
3 | kacper
tabela dwa:
ID | jakiespole
1 | akfsfass
3 | ioiweow
i chcę żeby mi wyświetliło:
ID | imie
2 | jola
Ale bardzo ważne jest dla mnie to że gdy tabela dwa jest pusta to ma mi wyswietlić wszystko z tabeli jeden i własnie tego nie potrafię uzyskać.
Ja robię to tak
Select jeden.ID,jeden.imie from jeden , dwa where jeden.ID!=dwa.ID;
Problem polega na tym że to nie działa gdy tabela dwa jest pusta, a wtedy chciałbym zeby wyswietliło wszystko z tabeli jeden.
Z góry dzięki za pomoc
Vertical
29.12.2004, 20:57:00
Cytat
Ale bardzo ważne jest dla mnie to że gdy tabela dwa jest pusta to ma mi wyswietlić wszystko z tabeli jeden i własnie tego nie potrafię uzyskać
<?php
$result = mysql_query(\"SELECT * FROM tabela2 WHERE ID = '1'\"); if($row['id'] == \"\")
{
}
?>
cinnek
29.12.2004, 21:53:44
a nie można jakoś jednym zapytaniem żeby wyswietlało te rekordy których nie ma w drugiej tabeli??
gdaq
30.12.2004, 01:17:02
Jednym zapytaniem mozna uzywajac operatora MINUS ale nie obsluguje go jeszcze narazie MySQL wiec zostaje napiasnie proecdury ale to chyba nie ma sensu. Przedstawione powyzej rozwiazanie jest najrozsadniejsze i proste.
Z warunku where chyba nie da sie uzyskac czegos takiego bo iloczyn kartezjanski dwoch tablic prz czym jeden psutej zawsze zwroci pusta wartosc.
Pozostaje jeszcze podzapytanie ale rowniez nie obsluguje tego mysql.
Gdaq
popbart
30.12.2004, 10:32:37
To nie takie trudne
SELECT jeden.id,jeden.imie
FROM jeden LEFT JOIN dwa ON (jeden.id=dwa.id_jeden)
WHERE dwa.id_jeden IS NULL