Datenbank JOIN
rainer
- datenbank
0 Frank (no reg)0 rainer
0 Ilja
Hallo,
komme mit meinen JOIN nicht klar.
SELECT zf_id_ga,
timestamp_ga,
datum,
user_ga,
arbeitsbeginn_ga,
arbeitsende_ga,
kontrGL,
kontr,
loginoon.kennung,
loginoon.gebiet
FROM gazeiterfassung
LEFT JOIN loginoon
ON loginoon.kennung=gazeiterfassung.user_ga
WHERE loginoon.kennung='".$_SESSION["MM_Username"]."'";
So bekomme ich vom eingeloggten User die Daten.
Ich möchte mich über eine Session einloggen, Tabellen sollten jedoch über das Gebiet=eine Nummer (fast mehrere User zusammen) angezeigt werden, nicht über den Usernamen.
Hab schon alles probiert, kann irgendwie das Gebiet nicht ansprechen.
mfg
Rainer
Hallo,
komme mit meinen JOIN nicht klar.
Ich möchte mich über eine Session einloggen, Tabellen sollten jedoch über das Gebiet=eine Nummer (fast mehrere User zusammen) angezeigt werden, nicht über den Usernamen.
Ich kann mir beim besten Willen nicht vorstellen, was du da treibst oder vorhast. Vielleicht mal mit ein paar Beispieldaten unterlegen.
Also wenn die Entitäten "User" und "Gebiet" eine Vernküpfung haben, wie sieht diese aus und wo ist sie definiert?
Hab schon alles probiert, kann irgendwie das Gebiet nicht ansprechen.
"Alles" ist relativ. Ausserdem, woher sollen die Leser hier wissen, was du bereits probiert hast? "Gebiet" ansprechen wo, wobei, womit?
Ciao, Frank
Hallo,
komme mit meinen JOIN nicht klar.
Ich möchte mich über eine Session einloggen, Tabellen sollten jedoch über das Gebiet=eine Nummer (fast mehrere User zusammen) angezeigt werden, nicht über den Usernamen.Ich kann mir beim besten Willen nicht vorstellen, was du da treibst oder vorhast. Vielleicht mal mit ein paar Beispieldaten unterlegen.
»»
Also wenn die Entitäten "User" und "Gebiet" eine Vernküpfung haben, wie sieht diese aus und wo ist sie definiert?
Hab schon alles probiert, kann irgendwie das Gebiet nicht ansprechen.
"Alles" ist relativ. Ausserdem, woher sollen die Leser hier wissen, was du bereits probiert hast? "Gebiet" ansprechen wo, wobei, womit?
Ciao, Frank
Hallo Frank,
Danke erstmal für deine Antwort,
Naja, ich habe zwei Tabellen
Eine "loginoon" Tabelle mit folgender Struktur:
ID,
kennung,
passwort,
rechte,
vorname,
nachname,
gebiet
Zweite Tabelle "gazeiterfassung" mit folgender Struktur:
ID,
timestamp,
datum,
user,
arbeitsbeginn,
arbeitsende,
anmerkung,
kontrGL,
kontr
jetzt möchte ich mich als USER über die "gebiet" (NR) einloggen.
"gebiet" fast mehrere "user" oder in meinen Fall "kennung" zusammen.
Wenn ich mich als "user" der in der Tabelle "gazeiterfassung" vorkommt Einlogge(über SESSION), ist das kein Problem, dann sehe ich alles von diesen "user" in der Tabelle, ich möchte jedoch alle "user" sehen, die unter "gebiet" eine NR (zB. alle user mit der Nr. 12) haben.
Ich hoffe, ich habe mich jetzt klarer ausgedrückt.
mfg
Rainer
Hallo,
grunzipiell (1): man loggt sich nicht in Tabellen ein.
grunzipiell (2): dein bisheriger Join ist sowieso falsch herum
Du möchtest eine Abfrage machen,
Also, woher nimmst du dann den Wert für "gebiet", steht der auch in einer Session-Variablen drin? Oder möchtest du alle User passend zum Gebiet passend zur Userkennung aus der Sessionvariablen?
Und wo ist die Verbindung zwischen der Entität "user" aus "gazeiterfassung" und der Information "gebiet"? Sind dass gazeiterfassung.user und loginoon.kennung?
Du siehst, deine Problembeschreibung hinterlässt immer noch mehr Fragen als Antworten. ;-)
Bis zum nächsten Mal.
Frank
Hallo,
grunzipiell (1): man loggt sich nicht in Tabellen ein.
grunzipiell (2): dein bisheriger Join ist sowieso falsch herumDu möchtest eine Abfrage machen,
- welche dir Informationen aus "gazeiterfassung" (User Infromationen) anzeigt
- und wo das Suchkriterium (WHERE) nicht die User-Kennung ist, sondern "gebiet"
Also, woher nimmst du dann den Wert für "gebiet", steht der auch in einer Session-Variablen drin? Oder möchtest du alle User passend zum Gebiet passend zur Userkennung aus der Sessionvariablen?
Und wo ist die Verbindung zwischen der Entität "user" aus "gazeiterfassung" und der Information "gebiet"? Sind dass gazeiterfassung.user und loginoon.kennung?
Du siehst, deine Problembeschreibung hinterlässt immer noch mehr Fragen als Antworten. ;-)
Bis zum nächsten Mal.
Frank
Hallo Frank,
ich versuche einfach, mein Problem zu lösen,
Einloggen in Tabellen, warum nicht, ich möchte sie Kontrollieren und bei falscher Eingabe korrigieren.
Meine Voraussetzung ist: User (Anlegen eines Datensatzes)
Kontrolle (Kontrolle eines Datensatzes, jedoch nur vom Gebiet)
Chef (Kann alles kontrollieren)
Erklärt: Kontrolle vom Gebiet, sollte nur die Gebiete sehen, welche mit seinen Usernamen übereinstimmen. (z.B gebiet6 sieht Daten von ga6, ga6_2, ga6_3, jedoch nicht daten von ga5, ga5_2, deshalb die Nr. für "gebiet")
Chef kann alles sehen, deshalb auch kein Problem mit einer Session.
Der Wert für Gebiet ist in meinen Login vergeben:
Login: gebiet6 Rechte user Wert für gebiet=517
ga6 Rechte ga Wert für gebiet=517
ga6_2 Rechte ga Wert für gebiet=517
ga5 Rechte ga Wert für gebiet=28
Chef verw Rechte verw sieht alle gebiete
Auswahl für Gebiet, sollte aber der Login sein, also nicht wählbar.
Das ist eben mein Problem, mit Session eingeschränkten Zugriff zu vergeben.
"loginoon" sind meine Zugagsdaten, sowie Rechte in der Datenbank
"gazeiterfassung" ist meine Datenbank
Danke nochmals, für deine Antwort!
Bin momentan im Umzug, deshalb meine verzögerten Antworten. Hab durch Möbelabbau und Aufbau ein bischen Stress. (Internet nur mit Datenstick)
mfg
Rainer
Hallo wiedermal,
ja, okay ... was dir fehlt ist eine existente Datenbeziehung (z.b. ein Foreign Key / Fremdschlüsselbeziehung) zwischen dem Eintrag in gazeiterfassung und deiner loginoon Tabelle. Ohne den wirst du nie einen Zusammenhang zwisch beiden Tabellen herstellen können. Also welches Feld in gazeiterfassung steht für "Gebiet"? Ich sehe dieses nicht, bzw es ist nicht offensichtlich. Wenn es da ist, dann setze doch einfach selbiges in den Join ein.
Ansonsten bringe ich hier gern auch wieder den Punkt: Dein Datenmodell ist nicht zweckgemäss.
Bin momentan im Umzug, deshalb meine verzögerten Antworten. Hab durch Möbelabbau und Aufbau ein bischen Stress. (Internet nur mit Datenstick)
Solange du dabei bleibst (und nicht auch noch Doppelpostings machst - das mögen die Moderatoren hier nicht so), bin ich auch da. Ich hab leider auch nebenbei noch Arbeit ... ;-)
Ciao, Frank
moin,
wie frank schon sagte, schwierig nachzuvollziehen, was du eigentlich willst. abre da du einen OUTER JOIN auf die tabelle loginoon machst und die eventuell einschränken auf diese tabelle hast, sollte die Bedinung mit in die JOIN bedinung und nicht in die WHERE klausel, sonst klappt der OUTER JOIN nicht mehr.
SELECT zf_id_ga, timestamp_ga, datum, user_ga, arbeitsbeginn_ga,
arbeitsende_ga, kontrGL, kontr, loginoon.kennung, loginoon.gebiet
FROM gazeiterfassung
LEFT JOIN loginoon ON loginoon.kennung=gazeiterfassung.user_ga AND loginoon.kennung='".$_SESSION["MM_Username"]."'"
;
Ilja
moin,
wie frank schon sagte, schwierig nachzuvollziehen, was du eigentlich willst. abre da du einen OUTER JOIN auf die tabelle loginoon machst und die eventuell einschränken auf diese tabelle hast, sollte die Bedinung mit in die JOIN bedinung und nicht in die WHERE klausel, sonst klappt der OUTER JOIN nicht mehr.
SELECT zf_id_ga, timestamp_ga, datum, user_ga, arbeitsbeginn_ga,
arbeitsende_ga, kontrGL, kontr, loginoon.kennung, loginoon.gebiet
FROM gazeiterfassung
LEFT JOIN loginoon ON loginoon.kennung=gazeiterfassung.user_ga AND loginoon.kennung='".$_SESSION["MM_Username"]."'"
;Ilja
Hallo Ilja,
Danke für deine Antwort,
werde ich wenn es mir möglich ist gleich mal testen, vielleicht ist das ja die Lösung, hab nähmlich alles probiert, jedoch die Session immer unter der WHERE klausel eingebunden.
Meine Tabellen und Erklärungen, hab ich schon bei frank beantwortet, vielleicht wirds dadurch verständlicher.
mfg
Rainer
moin,
wie frank schon sagte, schwierig nachzuvollziehen, was du eigentlich willst. abre da du einen OUTER JOIN auf die tabelle loginoon machst und die eventuell einschränken auf diese tabelle hast, sollte die Bedinung mit in die JOIN bedinung und nicht in die WHERE klausel, sonst klappt der OUTER JOIN nicht mehr.
SELECT zf_id_ga, timestamp_ga, datum, user_ga, arbeitsbeginn_ga,
arbeitsende_ga, kontrGL, kontr, loginoon.kennung, loginoon.gebiet
FROM gazeiterfassung
LEFT JOIN loginoon ON loginoon.kennung=gazeiterfassung.user_ga AND loginoon.kennung='".$_SESSION["MM_Username"]."'"
;Ilja
Hallo Ilja,
Danke für deine Antwort,
werde ich wenn es mir möglich ist gleich mal testen, vielleicht ist das ja die Lösung, hab nähmlich alles probiert, jedoch die Session immer unter der WHERE klausel eingebunden.
Meine Tabellen und Erklärungen, hab ich schon bei frank beantwortet, vielleicht wirds dadurch verständlicher.
mfg
Rainer
Hallo Ilja,
ja auch mit deiner möglichkeit, erhalte ich bei Einbindung des USER über Session, keinen Zugriff auf alle jene USER die die selbe "gebietsnummer" haben.
mfg
Rainer
moin,
full quotes sind nicht sinnvoll, unterlasse sie bitte. zum anderen ist es wirklich schwierig, aus deinen beschreibungen das herauszufinden, was du eigentlich willst. deine abfrage wird letzlich für datenbank-profis trivial sein, die kompliziertheit besteht also alleine in der begabung, die kristall-kugel zu verwenden. aber ich glaube zu ahnen/vermuten/raten, was du suchst.
SELECT hier_deine_spalten
FROM gazeiterfassung ge
INNER JOIN loginoon li ON li.kennung = ge.user_ga
WHERE li.gebiet = (SELECT li2.gebit
FROM loginoon li2
WHERE li2.kennung='hier_die_session'
)
;
Ilja
moin,
full quotes sind nicht sinnvoll, unterlasse sie bitte. zum anderen ist es wirklich schwierig, aus deinen beschreibungen das herauszufinden, was du eigentlich willst. deine abfrage wird letzlich für datenbank-profis trivial sein, die kompliziertheit besteht also alleine in der begabung, die kristall-kugel zu verwenden. aber ich glaube zu ahnen/vermuten/raten, was du suchst.
SELECT hier_deine_spalten
FROM gazeiterfassung ge
INNER JOIN loginoon li ON li.kennung = ge.user_ga
WHERE li.gebiet = (SELECT li2.gebit
FROM loginoon li2
WHERE li2.kennung='hier_die_session'
)
;Ilja
Hallo Ilja,
Ich weis, "sehr spät" aber unser Umzug hatte vorrang.
Danke für dein Verständnis, hab aus deinen Antworten einiges gelernt.
Auch für die Lösung meines Problemes, möchte ich mich nochmals bedanken.
Dank, auch an alle anderen die mitgeholfen haben.
mfg
Rainer