Cross join?
Marc
- php
0 steffen1 MrWurf
0 marc0 Vinzenz Mai0 Marc
hallo
kann mir jemand einen tipp geben,wie folgende aufgabe am besten gelöst wird?
ich habe 2 tabellen:
eine tabelle "personal"
eine tabelle "aufträge"
ich muss eine x-beliebige person einem x-beliebigen auftrag zuteilen.
die ausgabe soll zeigen:
+----------------------------------------+
+ | datum1 | datum2 | datum3 | etc.+
+----------------------------------------+
links sind alle personen die in der tabelle "personal" vorhanden sind. rechts davon sind in einer übersicht über die nächsten 14 tage infos,wer wann arbeitet,frei hat,krank ist, etc. (notiz).
reichen dafür z.b. diese 2 tabellen oder braucht es eine dritte mit den zuteilungen? brauchts dafür anweisungen wie "Cross join"?
wäre für einen anstoss/richtungsanzeige dankbar.
Hi,
also die 2 Tabellen reichen für diese Aufgabe auf jeden Fall!
Nein brauchst auch kein Cross join.
mfg
Moin
falls
eine x-beliebige person einem x-beliebigen auftrag zuteilen.
auf eine n:m-Beziehung hindeuten soll, dann ist eine Zwischentabelle durchaus empfehlenswert. (um nicht zu sagen das einzig richtige)
Gruß
Wurf
dank euch für euer echo. also ich habs jetzt mal so gelöst und scheint zu funktionieren:
$pers_query = mysql_query("select dispo_personal.* ,dispo_auftrag.* FROM dispo_personal
LEFT JOIN dispo_auftrag ON dispo_personal.auftrags_id = dispo_auftrag.id");
einwände?
Hallo Marc,
dank euch für euer echo. also ich habs jetzt mal so gelöst und scheint zu funktionieren:
$pers_query = mysql_query("select dispo_personal.* ,dispo_auftrag.* FROM dispo_personal
LEFT JOIN dispo_auftrag ON dispo_personal.auftrags_id = dispo_auftrag.id");
Erstens ist es immer eine gute Idee, das SQL-Statement in einer eigenen String-Variablen vorzubereiten, zu Debugzwecken kann man es prima mit einer echo-Anweisung ausgeben.
Weiterhin solltest Du nur die Spalten auswählen, die Du auch wirklich benötigst, und nicht überflüssige Spalten (bequem) mit * auswählen. Du hast auch bessere Kontrolle über die Spalten. Es ist ein einziges Mal, beim Erstellen mehr Aufwand, der sich aber lohnt.
einwände?
Ich möchte nur noch einmal auf den Einwurf von MrWurf zurückkommen:
Stimmt folgende Aussage: "Jedem Auftrag ist genau ein Mitarbeiter zugeordnet."
Ansonsten noch ein allgemeiner Hinweis: Deine Aufgabe könntest Du elegant mit einer Kreuztabellenabfrage, die etwas ganz anderes ist als ein CROSS JOIN, erledigen können. Jedoch ist das MS Access bzw. die Jet-Engine das einzige mir bekannte Datenbankmanagementsystem, das sowas unterstützt. Was ein CROSS JOIN ist, kannst Du im geplanten Feature-Artikel von Rouven nachlesen, siehe dazu Tims Link in https://forum.selfhtml.org/?t=119395&m=766062.
Freundliche Grüße
Vinzenz
hallo vinzenz
danke dir vielmals für Deine ausführungen und link-tipp.
gruss
marc