Złożenie zapytania SQL

0

Witam wszystkich
Mam pewien problem, a mianowicie
Mam jedną tabelę Ad w której przechowuje podstawowe informacje na temat ogłoszenia natomiast w drugiej tabeli AdDetails przechowuje dodatkowe infformację o ogłoszeniu w formie
ad_id, field, value
np.

23, l_pokoi, 3
23, powierzchnia, 103

Teraz chcę wyszukać wszystkie ogłoszenia w których liczba pokoi równa się 3 i powierzchnia jest większa niż 103 i tu pojawia się problem.

0
SELECT * FROM Ad
INNER JOIN AdDetails AS DET1 ON (DET1.ad_id = Ad.id AND DET1.field  = 'l_pokoi' AND DET1.value = 3  )
INNER JOIN AdDetails AS DET2 ON (DET2.ad_id = Ad.id AND DET2.field = 'powierzchnia' AND DET2.value > 103)

Nie testowane.

EDIT: Poprawione

0

No tak ale w AdDetails nie ma takich pól jak l_pokoi tylko
field = l_pokoi, value = 4

Wiele ogłoszeń ma wiele róznych parametrów i bez sensu byłoby dodawać dla każdego szczegółu oddzielne pole. Przy kolejnym nowym szczególe w nowym ogłoszeniu należałoby przebudowywać znów tabelę.

1

Ja bym zrobił tak:

SELECT * FROM Ad
INNER JOIN AdDetails AS d1 ON d1.ad_id = Ad.id AND d1.field='l_pokoi' AND d1.value=3
INNER JOIN AdDetails AS d2 ON d2.ad_id = Ad.id AND d2.field='powierzchnia' AND d2.value > 103
0
mk napisał(a):

Ja bym zrobił tak:

SELECT * FROM Ad
INNER JOIN AdDetails AS d1 ON d1.ad_id = Ad.id AND d1.field='l_pokoi' AND d1.value=3
INNER JOIN AdDetails AS d2 ON d2.ad_id = Ad.id AND d2.field='powierzchnia' AND d2.value > 103



Działa :) Dzięki wielkie :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1