Announcement

Collapse
No announcement yet.

Spezielle Reihenfolge

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Spezielle Reihenfolge

    Hallo

    Ich hab hier eine etwas spezielle Abfrage und hoffe das mir evtl. jemand weiter helfen kann.
    Erstmal ein paar Infos:

    Die Tabelle:
    viewer_id, target_id, label, display_id

    Als Daten für den Query habe ich mehrere
    viewer_id's und target_id's

    Gesucht ist label mit display_id in einer ganz speziellen Reihenfolge.
    Und zwar habe ich z.b. für viewer_id folgende Werte:
    Menge A [ 0, 173, 174, 176 ]

    Und für target_id:
    Menge B [ 0, 143, 145, 180 ]

    Als Ergebnis sollen jetzt die Datensätze geliefert werden, bei denen
    die viewer_id in A vorhanden ist, und target_id in B.

    Sortiert soll das ganze erst nach der Reihenfolge der Elemente in A, dann nach B.

    Was ich bis jetzt habe ist folgendes:

    Code:
    SELECT `label`, `display_id`
    FROM `tpl_rel`
    WHERE
     `viewer_id` IN ( 0, 173, 174, 176 ) AND
     `target_id` IN ( 0, 143, 145, 180 )
    
    ORDER BY
     `viewer_id` = 0,
     `viewer_id` = 173,
     `viewer_id` = 174,
     `viewer_id` = 176,
    
     `target_id` = 0,
     `target_id` = 143,
     `target_id` = 145,
     `target_id` = 180
    Der Query bringt als Ergebnis schon das was ich möchte, z.b.:

    Code:
    label, display_id
    nav 	182
    master 	181
    nav 	172
    master 	171
    content 	178
    Das Problem ist jetzt, das ich immer nur den ersten Wert für ein label haben möchte. In diesem Fall z.b. ist master, 171 überflüssig da 181 schon vorher vorkommt.
    Das perfekte Ergebnis wäre also:

    Code:
    label, display_id
    nav 	182
    master 	181
    content 	178


    Ich hoffe ich konnte mich zumindest halbwegs verständlich ausdrücken und hoffe irgendwer hat eine Idee dazu!


    Viele Grüße und vielen Dank schonmal!

  • #2
    Das einzige was mir einfallen würde wären unions

    Comment

    Working...
    X