Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Relacja wiele do wielu - wyciąganie danych
Sierak
post 22.06.2006, 08:19:50
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:
  1. SELECT h.*, count(hs.HardID) AS liczba
  2. FROM hardware AS h
  3. LEFT JOIN cthardtosoft AS hs ON (h.HardID = hs.HardID)
  4. WHERE h.HardID IS NULL OR hs.SoftID != '12' GROUP BY hs.HardID HAVING liczba <= 1


lub tak:
  1. SELECT * FROM hardware WHERE HardID
  2. IN (
  3. SELECT HardID FROM cthardtosoft WHERE SoftID != '12' GROUP BY HardID HAVING count(*) <= 1
  4. )


Jezeli mam wybierac to wolalbym jedno zapytanie, bez podzapytan.
Mam do dyspozycji MySQL 4.1
Go to the top of the page
+Quote Post

Posty w temacie


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: 25.06.2025 - 07:51