给出的表格如下:
MAKLER (MaklerID, Name, registriertSeit)
IMMOBILIE(ImmoID, Typ, qm, AnzahlZimmer, Baujahr, Energiewert, Preis,
angebotenVon, Provision, liegtIn)
我正在尝试编写一个查询,其中我检查“Makler”是否销售类型为“Haus”的imbolie,而不是其他类型的“Immobilien”。如果Makler出售“Haus”和“Wohnungen”类型的固定版,我不想选择它们。
我的解决方案远远看起来像这样:
SELECT makler.*
FROM makler JOIN
immobilie
ON immobilie.angebotenVon = makler.MaklerID
WHERE immobilie.Typ = "Haus" AND immobilie.Typ != '%'
因此,如果“Haus”在table immobilie中,并且“Makler”不会出售任何其他内容,则会显示完整的makler-table。但我对这个解决方案非常不确定。
答案 0 :(得分:0)
您可以在多字段上使用联接,例如reference from.或简单地将查询更改为
SELECT makler.*
FROM makler
JOIN immobilie ON immobilie.angebotenVon = makler.MaklerID
AND immobilie.Typ = "Haus"
答案 1 :(得分:0)
根据您的描述,您似乎想要not exists
:
SELECT m.*
FROM makler m
WHERE NOT EXISTS (SELECT 1
FROM immobilie i
WHERE i.angebotenVon = m.MaklerID AND
i.Typ <> 'Haus'
);
如果你想保证&#34; Haus&#34;在表格中(immobilie
可能没有匹配的记录),然后使用exists
:
SELECT m.*
FROM makler m
WHERE NOT EXISTS (SELECT 1
FROM immobilie i
WHERE i.angebotenVon = m.MaklerID AND
i.Typ <> 'Haus'
) AND
EXISTS (SELECT 1
FROM immobilie i
WHERE i.angebotenVon = m.MaklerID AND
i.Typ = 'Haus'
);