Mahlzeit Paco,
Dann solltest Du diese Information auch daher ziehen, wo sie drinstehen - nämlich aus der Tabelle "dispo".
Das leuchtet mir ein, allerdings kann es projekte geben, für die noch niemand disponiert wurde und die dann in dispo nicht auftauchen
Macht nichts - wenn Du die Tabellen richtig verknüpfst. Hast Du Dir den verlinkten Artikel zum Thema JOINs durchgelesen?
Du setzt also innerhalb einer Schleife für jeden Durchgang eine SQL-Abfrage ab, um die jeweiligen Benutzer auszulesen?
..und die so ermittelten dann wieder in einer schleife auszugeben. Wenn das geht würde ich das gerne so machen
Das geht, ist aber ziemlicher Mist. Für Abfragen ist das DBMS da, nicht irgendwelche Programmiersprachen ... :-)
Nein, nicht nur. Aber sinnvollerweise solltest Du das genau so machen.
Hat das nur performance-vorteile oder auch andere? Ginge das auch mit subqueries?
Es hat in der Tat hauptsächlich Performance-Vorteile. Und es geht auch mit Subqueries, wenn Dein DBMS das unterstützt. Da Du verschwiegen hast, welches Du verwendest, müsstest Du das also herausfinden.
Was hast Du bisher versucht?
Sowas wie:
SELECT * FROM projekte LEFT JOIN dispo ON projekte.id = dispo.pr_id
JOIN users ON dispo.user_id = users.id
Das sieht doch prinzipiell gar nicht so schlecht aus. Allerdings solltest Du Dir wirklich den verlinkten Artikel zu JOINs zu Gemüte führen. Insbesondere würde ich die Tabelle "users" auch mittels einem LEFT (OUTER) JOIN anknüpfen, da es schließlich sein kann, dass (noch) keine Benutzer zugeordnet wurden.
Ich glaube die Abfrage hat mir auch das richtige Array geliefert,
Eine Abfrage liefert kein Array zurück, sondern eine Ergebnismenge. Was dann die verwendete Programmiersprache daraus macht, ist der Sprache bzw. dem Programmierer überlassen. Was bedeutet "du glaubst"? Hast Du Dir einfach mal mittels print_r() ausgeben lassen, was das Ergebnis war?
aber ich tu mich irrsinnig schwer das Array, das ich dann bekomme, vernünftig sortiert auszugeben.
Für das Sortieren ist das DBMS zuständig. Die Programmiersprache sollte dann (eigentlich) nur noch Zeile für Zeile untereinander schreiben.
Deswegen dachte ich, ich mach die Abfrage mehr oder weniger direkt in der jeweiligen Tabellenzelle.
Mit Verlaub, das ist wirklich Blödsinn. Erstens kann ein DBMS Dir viel komfortabler und schneller die gewünschten Informationen liefern und zweitens ist eine einzige Schleife für das Durchlaufen und Ausgeben der Ergebnismenge in JEDER Programmiersprache schneller als mehrere Abfragen, die jeweils nur einen einzelnen Datensatz holen.
MfG,
EKKi
sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|