Ich möchte den letzten (dateCreated desc) jedes Datensatzes in zwei verschiedenen Situationen zurückgeben.Gibt Ergebnisse basierend auf distinct für bestimmte Spalte in einer Situation zurück
Dies ist vielleicht nicht einmal möglich, aber ich dachte, ich würde hier weitermachen.
1) Wenn der Datensatz einen Wert in der parentId -Spalte hat, dann möchte ich durch alle Datensätze mit derselben parentId suchen und nur die letzte (dateCreated desc) in die Ergebnisse aufnehmen.
Ich weiß, wie die w/eine Abfrage wie dies zu tun:
select distinct(parentId) from table order by dateCreated desc
Aber ich weiß nicht, wie das zu erreichen, während versuchen, für beiden Situationen zu berücksichtigen.
2) Wenn der Datensatz keine parentId enthält und die ID dieses Datensatzes nicht in der parentId eines anderen Datensatzes enthalten ist, dann fügen Sie diese in das Ergebnis ein.
Ich weiß, dass ich alle Ergebnisse bekommen konnte, dann programmatisch Schleife durch sie etwa so:
for($i<0; $i<count($results); $i++)
{
if ($results[$i]['parentId'])
{
$parentId = $results[$i]['parentId'];
$parentDateCreated = $results[$i]['dateCreated'];
for($k=0; $k<count($results); $k++)
{
if($results[$k]['parentId'] = $parentId)
{
if ($results[$i]['dateCreated'] < $results[$k]['dateCreated'])
{
$data[$parentId] = $results[$i];
}
}
}
}
}
Wahrscheinlich nicht effizient und nicht sicher, ob es funktioniert, aber ich wollte eine Vorstellung davon geben, was ich brauche, zu erreichen , Muss ich die neuesten Datensätze für den Fall finden, dass es einen Wert in der ParentId (die es mit allen anderen Datensätzen mit der gleichen ParentId verglichen werden muss) oder wenn der Datensatz keine ParentId enthält, dann nur enthalten im Ergebnis auch.
Ich erstellte SQL Fiddle mit einer grundlegenden Abfrage. http://sqlfiddle.com/#!9/69544/1
Beispieldaten:
id parentId dateCreated
-- -------- -------------------
1 null 2016-04-10 20:00:00
2 1 2016-04-12 12:00:00
3 1 2016-04-13 10:00:00
4 null 2016-04-15 14:33:00
Erwartete Ergebnisse (Ich werde nur die ids kehre ich im Ergebnis erwarten):
3 und 4.
id 3, weil es gefunden Eine parentId von 1 und die letzte in ID 3 gefunden, weil das dateCreated aktueller war.
ID 4, weil es keine ParentId hatte und auch nicht 4 in der ParentId-Spalte eines anderen Datensatzes angezeigt wurde.
Ihre erste Abfrage wird nicht funktionieren. Beispieldaten und gewünschte Ergebnisse würden wirklich helfen zu erklären, was Sie erreichen möchten. –
Ihre Geige ist nicht sehr hilfreich, da Sie nicht mehrere Datensätze mit der gleichen ParentID haben – Barmar