Ich versuche, die unterschiedlichen Werte in A mit Sitz in Zustand von Spalte BSQL Join nach Distinct
Das Problem, das ist, wenn ich alle, wird nicht die Bedingungen eingehalten werden.
Wenn ich nur den Wert, den ich möchte, unterscheiden, wird Spalte B Daten nicht verbunden.
Was habe ich versucht:
Abfrage A:
SELECT DISTINCT id_conversacion, convo_started, started_by, has_unread, pr_token,
hidden_started, hidden_recipiente, de_persona, para_persona, convo_perteneciente
FROM cs_conversaciones
INNER JOIN cs_privatemessages
ON cs_privatemessages.convo_perteneciente = cs_conversaciones.id_conversacion
WHERE cs_privatemessages.de_persona = 123456 OR
cs_privatemessages.para_persona = 123456
ORDER BY id_conversacion
Ausgang (Didnt Typ alle Spalten outputed, nur ein Beispiel):
|id_conversacion|convo_started|started_by|has_unread|pr_token|...etc|
---------------------------------------------------------------------
|1 | 2016-06-05 | 123456 | 0 | dd5f4 |
|1 | 2016-06-05 | 123456 | 0 | 4fd85 |
|2 | 2016-06-05 | 123456 | 0 | 8sa8s |
Die outputed Spalten sind in Ordnung, aber der Unterschied (id_conversacion), der sich auf cs_privatemessages.convo_perteneciente
beziehen sollte Wiederholungen (1, 1, 2)
Abfrage B:
SELECT DISTINCT id_conversacion
FROM cs_conversaciones
INNER JOIN cs_privatemessages
ON cs_privatemessages.convo_perteneciente = cs_conversaciones.id_conversacion
WHERE cs_privatemessages.de_persona = 123456 OR
cs_privatemessages.para_persona= 123456
ORDER BY id_conversacion
Ausgang:
ich das Gegenteil bekommen, die deutliche ok, aber die ausgegebenen Spalten nicht.
|id_conversacion|
-----------------
| 1 |
| 2 |
Erwartetes Ergebnis (fehlende Spalten von join):
|id_conversacion|convo_started|started_by|has_unread|pr_token|de_persona|etc
-------------------------------------------------------------------------
|1 | 2016-06-05 | 123456 | 0 | dd5f4 | 123456 |
|2 | 2016-06-05 | 123456 | 0 | 8sa8s | 126544 |
Was mir, was die unterschiedlichen Wiederholungen macht, weil es in der Join-Tabelle mehr 1 Zeile ist.
Was ist die Logik, die Sie führte eine der 'id_conversacion = 1 'Datensätze aus Ergebnismenge zu verwerfen? –
'distinct' wirkt auf die gesamte Zeile, nicht auf eine einzelne Spalte und da sich der Wert in der Spalte' pr_token' ändert, erhalten Sie mehr Zeilen. Wenn Sie nur eine Zeile pro 'id_conversacion 'wollen, müssen Sie entscheiden, welchen pr_token-Wert Sie haben möchten (möglicherweise durch Anwenden von min/max und Gruppierung) – jpw
DISTINCT gilt für die gesamten ausgewählten Zeilen. Wenn Sie jede id_conversacion nur einmal wollen, müssen Sie entscheiden, welche Werte für die anderen Spalten gewählt werden sollen. – jarlh