2 Stimmen

php codeigniter assembliert Abfrageergebnisse

Ich bin wie folgt eingerichtet:

Table 'data': 'title','body',...,'user_id',...  
Table 'users': 'user_id','some_val'...

Grundsätzlich möchte ich die Tabellen "data" und "users" irgendwie über das Feld user_id verknüpfen, so dass ich "some_val" aus der Tabelle "users" ziehen kann. Mein Problem ist, dass nicht jede user_id in der Tabelle "data" einen entsprechenden Eintrag in der Tabelle "users" hat.

Mit Codeigniter/php möchte ich letztlich ein Ergebnis-Array von Werten zusammenstellen, die alle "some_vals" aus der Tabelle "users" beitreten data.user_id = users.user_id . ABER wenn es eine user_id in der Datentabelle, aber NICHT in der Benutzer-Tabelle gibt, möchte ich einige Standardwert in meine Ergebnisse Array einfügen (und hoffentlich dieses Array kann in der gleichen Reihenfolge wie die user_id in der Datentabelle sein).

Ich hoffe, das war nicht zu unklar. Irgendwelche Ideen?

2voto

Eric Punkte 87889

Was Sie tun wollen, ist eine so genannte left join . Im Wesentlichen werden dabei alle Zeilen von data und gleicht die users Tabelle. Außer, wenn data nicht über eine passende user_id lädt er einfach null für diese Spalten. Um mit diesen Spalten umzugehen null s, können Sie die coalesce Funktion, die eine null mit einem Wert (z.B. 1234, wenn er numerisch ist, aber ich habe einfach 'DefaultVal' für Demozwecke).

Wie auch immer, das Ganze sieht folgendermaßen aus:

select
    coalesce(u.some_val, 'DefaultVal') as some_val
from
    data d
    left join users u on
        d.user_id = u.user_id

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X