[gelöst]Mehr als ein OrderBy
Eingetragen von loony (203)
am 27.04.2013 - 10:36 Uhr in
am 27.04.2013 - 10:36 Uhr in
Hallo zusammen
Leider habe ich schon lange nichts mehr mit Drupal gemacht, was mir nun zum verhängniss wird. somit danke ich für den gedankenanstos oder problemlösung
ich will sortiert haben über zwei OrderBys
ich habe folgendes probiert:
<?php
$query = db_select('users', 'u');
$query->join('field_data_field_bezahlt', 'f', 'u.uid = f.entity_id');
$query->condition('f.field_bezahlt_value','Gesperrt', '<>');
$query->fields('u');
$query->fields('f');
$query->orderBy('f.field_bezahlt_value');
$query1 = db_select('field_data_field_fraktion', 'fr');
$query1->fields('fr');
$query1->orderBy('fr.field_fraktion_value');
$query->union($query1, 'UNION ALL');
$record = $query->execute();
?>
gibt einen Fehler
und ich habe probiert:
<?php
$query = db_select('users', 'u');
$query->join('field_data_field_bezahlt', 'f', 'u.uid = f.entity_id');
$query->join('field_data_field_fraktion', 'fr', 'u.uid = fr.entity_id');
$query->condition('f.field_bezahlt_value','Gesperrt', '<>');
$query->fields('u');
$query->fields('f');
$query->fields('fr');
$query->orderBy('f.field_bezahlt_value');
$query->orderBy('fr.field_fraktion_value');
$record = $query->execute();
?>
wie kan ich nun nach bezahlt und nach fraktion sortieren?
Vielen Danke :)
- Anmelden oder Registrieren um Kommentare zu schreiben
was willst du erreichen?
am 27.04.2013 - 11:33 Uhr
Ein order by ist gleich zu setzen mit dem SQL-Statement.
Grüße
Ronald
das ist mir klar das ich pro
am 27.04.2013 - 12:43 Uhr
das ist mir klar das ich pro SQL statment nur ein Orderby setzten kann, aber ich kann in diesem OrderBy in SQL mehrere entitäten angeben, wie mache ich dies aber mit Drupal?
ich will zuerst sortieren nach kriterium "bezahlt" und danach nach dem Kriterium "fraktion"
somit möchte ich erreichen dass ich auf 2 entitäten sortiert habe
z.b.:
hat bezahlt | fraktion A | Teilnehmer A
hat bezahlt | fraktion A | Teilnehmer Q
hat bezahlt | fraktion A | Teilnehmer F
hat bezahlt | fraktion B | Teilnehmer C
hat bezahlt | fraktion B | Teilnehmer P
hat nicht bezahlt | fraktion A | Teilnehmer O
hat nicht bezahlt | fraktion A | Teilnehmer X
hat nicht bezahlt | fraktion B | Teilnehmer B
das stimmt so nicht
am 27.04.2013 - 18:04 Uhr
Du kannst mehrere Sortierfelder angeben.
Einfach beide in einem order by mit Komma getrennt angeben.
Hauptkriterium ist das erste, Unterkriterium das zweite Feld.
Grüße
Ronald
ich danke dir so funktioniert
am 27.04.2013 - 20:01 Uhr
ich danke dir so funktioniert es. keine ahnung wesshalb es vorher nicht funktioniert hat. :(
<?php
$query = db_select('users', 'u');
$query->join('field_data_field_bezahlt', 'f', 'u.uid = f.entity_id');
$query->join('field_data_field_fraktion', 'fr', 'u.uid = fr.entity_id');
$query->condition('f.field_bezahlt_value','Gesperrt', '<>');
$query->fields('u');
$query->fields('f');
$query->fields('fr');
$query->orderBy('f.field_bezahlt_value, fr.field_fraktion_value');
$query->groupBy('u.uid');
$record = $query->execute();
?>
wenn du order_by
am 27.04.2013 - 20:55 Uhr
Zweimal setzt, gilt der Letzte.
Deshalb muss ein mehrstufiges order by in eine Zuweisung mit Komma getrennt.
Grüße
Ronald