2016-07-20 6 views
1

Ich habe die folgende SQL-Abfrage für MySQL:mysql Unterabfrage - Ergebnisse nicht erfüllen beide

SELECT SQL_CALC_FOUND_ROWS objects.objects_no 
FROM objects 
LEFT JOIN finds ON (objects.objects_no = finds.objects_no) 
LEFT JOIN ceramics ON (objects.objects_no = ceramics.objects_no) 
WHERE 1=1 
and (objects.objects_no) in (select DISTINCT objects_no from objects_materials where thesaurus_term_id in (18658)) 
and (objects.objects_no) in (select DISTINCT objects_no from objects_objects where thesaurus_term_id in (24193)) 
GROUP BY objects.objects_no 
ORDER BY objects.objects_no 

Stattdessen Ergebnisse zu bekommen, die beiden Unterabfragen entsprechen, habe ich auch Ergebnisse, die eine oder die andere passen. Hat jemand eine Idee warum das so ist?

Danke, Sandro

+0

, weil Sie eine Gruppe mit ohne Aggregatspalten machen. Also ist es eine Trickabfrage für das Äquivalent von doing gib mir die erste pro Gruppierung? – Drew

+0

@Drew. . . Nein, es macht effektiv "Select distinct". –

+0

Wählen Sie distinct, geben Sie mir einen pro Gruppierung, gleichen Unterschied. – Drew

Antwort

0

Versuchen Sie, die Bedingungen in Klammern zu setzen.

WHERE (
    (1=1) 
    and ((objects.objects_no) in (select DISTINCT objects_no from objects_materials where thesaurus_term_id in (18658))) 
    and ((objects.objects_no) in (select DISTINCT objects_no from objects_objects where thesaurus_term_id in (24193))) 
) 
+0

Danke für den Tipp, aber das hat nicht so gut funktioniert. Ich bin wirklich ratlos. – user3783604

0

Vielen Dank für Ihre Hilfe. Es funktioniert tatsächlich gut. Es gab ein Problem innerhalb der Daten im Thesaurus. Entschuldigung !!!

Verwandte Themen