SQL查询只询问一个值

时间:2016-12-05 00:29:02

标签: mysql sql

给出的表格如下:

MAKLER (MaklerID, Name, registriertSeit)
IMMOBILIE(ImmoID, Typ, qm, AnzahlZimmer, Baujahr, Energiewert, Preis,
angebotenVon, Provision, liegtIn)
“angebotenVon”是“MaklerID”的外键

我正在尝试编写一个查询,其中我检查“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。但我对这个解决方案非常不确定。

2 个答案:

答案 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'
             );