apfelsine: "Fehlerhafte" Einträge anzeigen lassen

Beitrag lesen

SELECT h.*  
FROM haupt h, company c  
WHERE h.companyId = c.id

From haupt, company
bedeutet, das du hier eine Multiplikation bzw. Kreuzprodukt oder auch kartesisches Produkt genannt, der beiden Tabellen bildest. Das bedeutet nach dieser Abfrage, jedes Tupel der Tabelle "haupt" wird mit jedem Ergebnistupel der Tabelle Company vereint,
Wenn in der Tabelle Haupt 3000 Zeilen  sind und das Ergebnis aus
companyId= c.id ca 2 Treffer hat, dann verdoppeln sich die Ergebniszeilen
3000 x 2

Näheres zu den verschiedenen Operationen kannst du hier nachlesen:
http://mixst.de/index.php?thema=db2
Es ist dort zwar in relationaler Algebra erklärt, aber die grundsätzliche Mathematik dahinter ist die gleiche
http://mixst.de/index.php?thema=db2&men=6&submen=5

SELECT *
FROM haupt h, company c
WHERE h.companyId NOT IN (SELECT h.companyId FROM haupt h, company c WHERE h.companyId = c.id)

  
Diese Abfrage bedeutet, das du nun alle Zeilen aus "haupt" mit den Zeilen aus "company" vereinst, deren "companies" nicht in "haupt" enthalten sind.