![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 16 Pomógł: 0 Dołączył: 1.04.2004 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Walcze z tym od wczoraj i pomyslalem ze moze wy mnie nakierujecie na rozwiazanie. Chodzi o odpowiednie wyciagniecie danych z tabeli ktora jest relacja wiele do wielu dla dwoch innych tabel.
Wyglada to mniej wiecej tak w duzym skrocie: tabela: hardware HardID 1 HardID 2 HardID 3 tabela: software SoftID 10 SoftID 11 SoftID 12 tabele: cthardtosoft HardID 1; SoftID 10 HardID 1; SoftID 11 HardID 1; SoftID 12 HardID 2; SoftID 10 HardID 2; SoftID 11 HardID 3; SoftID 10 Zapytanie w postaci listy wszystkich komputerow ktore POSIADAJA jakis soft to prosta sprawa. Ale mam klopot z odwrotna sytujacja. Chce liste komputerow ktore np. NIE POSIADAJA softu o ID 12 Probowalem w taki sposob ale mam przeklamane dane:
lub tak:
Jezeli mam wybierac to wolalbym jedno zapytanie, bez podzapytan. Mam do dyspozycji MySQL 4.1 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
@bendi ale przeciez ci pisalem, ze warunek HS.HardID is null AND HS.SoftID!=12 sie wyklucza nawzajem. Wszakze u mnie bylo: HS.HardID is null AND HS.SoftID=12
ale to bez znaczenia. jak jednoczensnie HS.HardID moze byc nullem i HS.SoftID moze miec jakas wartosc? Przeciez oba te pola są z tej samej tabeli. z tego samego rekordu. i jesli HS.HardID is null to znaczy, ze nie dolaczyl zadnego rekordu i tym samym HS.SoftID tez jest null. O, czyli wogole poprawka. akurat twoj warunek sie nawzajem nie wyklucza tylko jest jednoznaczny, czyli skoro HS.HardID is null to i HS.SoftID is null czyli autoamtycznie HS.SoftID !=12. czyli twoj warunek mozna zapisac: where HS.HardID is null a co w rezultacie da tylko takie rekordy, dla którech Hard nie posiada zadnego Soft. CZyli nie to co chcielismy (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 5.10.2025 - 07:38 |