CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos

|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP 
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren |

24.02.2012, 13:23:00
|
Anfänger
|
|
Registriert seit: Feb 2012
Alter: 44
Beiträge: 10
|
|
Hallo,
also jetzt bin ich total verwirrt! Du hast Recht (vielen vielen Dank schon mal)! Ich habe die beiden Tabellen mit den angegebenen Daten nochmals neu erstellt und die SQL-Befehle, wie von dir angegeben, ausgeführt. Siehe da: Alle Daten werden wie gewünscht ausgegeben.
Jetzt kommt aber nochmal ein Problem. Wenn ich den Befehl in der schon bei mir vorhandenen Tabelle ausführe, komme ich nicht zu dem gewünschten Ergebnis!?! Ich habe in dem Angehängten Dokument mehrere Screenshots der beiden verschiedenen Listentabellen angehängt (tb_listen war schon vorhanden, tbl_listen ist neu). Von beiden die Tabellenstrukturen (sind eig. gleich), Ausschnitte aus den beinhalteten Daten und das Ergebnis, wenn ich jeweils den SQL-Befehl ausführe.
Dort erkennt man, dass es bei der vorhandenen Tabelle eben nicht alle gewünschten Einträge zurückgibt, sondern nur Benutzer, die auch in der Listentabelle einen Eintrag haben.
Woran kann das liegen??? Kann das an den Daten liegen? Für eine Hilfe wäre ich seeeehr dankbar!
(Sorry, die Spalten sind nicht genau gleich benannt sind, wie oben)
|

24.02.2012, 14:03:44
|
 |
Administrator
|
|
Registriert seit: Jul 2004
Beiträge: 3.707
|
|
AW: SQL Join bei dem auf jeden Fall alle Einträge der linken Tabelle ausgegeben werde
Zitat:
Zitat von towbee
[..]
Woran kann das liegen??? Kann das an den Daten liegen?
|
Diese Fragen kannst nur Du Dir beantworten, da nur Du über alle Informatinen verfügst.
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert
Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!
Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
|

24.02.2012, 14:38:19
|
Anfänger
|
|
Registriert seit: Feb 2012
Alter: 44
Beiträge: 10
|
|
AW: SQL Join bei dem auf jeden Fall alle Einträge der linken Tabelle ausgegeben werde
Ich bin echt dankbar für jede Hilfe, aber das hilft mir natürlich nicht. Darum frage ich hier im Forum, weil ich selbst nicht mehr weiterkomme.
Wie auch immer ich glaube (nach ganz vielen Tests), dass in der SQL-Anweisung noch ein logischer Fehler steckt.
Wenn ich eine Gruppe abfrage, die existiert, zusammen mit einer Liste, die nicht existiert, dann gibt es mir nur diese Benutzer zurück, die KEINEN Tabellenlisteneintrag haben. Evtl. müsste ich noch dazu sagen, dass ein Benutzer mehreren Listen zugeordnet sein kann.
Nochmal: Wenn ein Benutzer der Gruppe 1 einen Listeneintrag der Liste 1 hat, aber ich die Gruppe 1 mit der Liste 2 (die nicht vorhanden ist) abfrage, dann gibt es nur die Benutzer zurück, die gar keinen Eintrag in der Liste haben!
Das muss doch an
Code:
(a.GRUPPE=1 AND b.LISTID Is Null)
liegen?!?
|

24.02.2012, 15:39:55
|
 |
Administrator
|
|
Registriert seit: Jul 2004
Beiträge: 3.707
|
|
AW: SQL Join bei dem auf jeden Fall alle Einträge der linken Tabelle ausgegeben werde
Zitat:
Zitat von towbee
[..]
Nochmal: Wenn ein Benutzer der Gruppe 1 einen Listeneintrag der Liste 1 hat, aber ich die Gruppe 1 mit der Liste 2 (die nicht vorhanden ist) abfrage, dann gibt es nur die Benutzer zurück, die gar keinen Eintrag in der Liste haben!
Das muss doch an
Code:
(a.GRUPPE=1 AND b.LISTID Is Null)
liegen?!?
|
Ja, aber was soll daran ein logischer Fehler sein. Das SQL-Statment entspricht Deinen Vorgaben.
Zitat:
Nun brauche eich eine Abfrage, die mir auf jeden Fall alle Benutzer einer Gruppe (z.B. 1) ausgibt und wenn vorhanden, auch einen Listeneintrag (z.B Liste 1).
|
Sorry.
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert
Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!
Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
|

24.02.2012, 16:00:02
|
Anfänger
|
|
Registriert seit: Feb 2012
Alter: 44
Beiträge: 10
|
|
AW: SQL Join bei dem auf jeden Fall alle Einträge der linken Tabelle ausgegeben werde
Wenn ich diese Tabellen habe:
Code:
Tabelle Benutzer Tabelle Listen
________________ ______________
ID GRUPPE UID NAME ID LISTID UID EINTRAG
1 1 abc Peter 1 1 abc Peter ist groß
2 1 def Hans 2 1 def Hans ist reich
3 2 ghi Karl 3 2 abc ein Eintrag
4 2 jkl Hugo 4 2 jkl ein anderer Eintrag
5 1 mno Kurt 5 3 jkl Das ist Text
6 2 def 0.5
7 3 abc nix
und folgenden Befehl ausführe:
Code:
SELECT *
FROM tbl_benutzer as a
LEFT JOIN tbl_listen as b ON a.UID = b.UID
WHERE
(a.GRUPPE=1 AND b.LISTID Is Null)
OR
(a.GRUPPE=1 AND b.LISTID=3)
kommt dieses Ergebnis:
Code:
ID GRUPPE UID NAME ID LISTID UID EINTRAG
1 1 abc Peter 7 3 abc nix
5 1 mno Kurt NULL NULL NULL NULL
ich erwarte aber dieses Ergebnis, weil Peter, Hans und Kurt in Gruppe 1 sind:
Code:
ID GRUPPE UID NAME ID LISTID UID EINTRAG
1 1 abc Peter 7 3 abc nix
2 1 def Hans NULL NULL NULL NULL
5 1 mno Kurt NULL NULL NULL NULL
Ist mein Problem nun einleuchtender? Danke für die Hilfe.
|

24.02.2012, 17:59:26
|
 |
Administrator
|
|
Registriert seit: Jul 2004
Beiträge: 3.707
|
|
AW: SQL Join bei dem auf jeden Fall alle Einträge der linken Tabelle ausgegeben werde
Führe die Abfrage in zwei Teilabfragen nacheinander aus. Dann wird es Dir möglicherweise klarer, dass auch hier kein losgischer Fehler vorliegt - eher ein Verständnisproblem Deinerseits.
PHP-Code:
SELECT *
FROM tbl_benutzer as a
LEFT JOIN tbl_listen as b ON a.UID = b.UID
WHERE
(a.GRUPPE=1 AND b.LISTID Is Null)
Code:
ID GRUPPE UID NAME ID LISTID UID EINTRAG
892 1 mno Kurt NULL NULL NULL NULL
PHP-Code:
SELECT *
FROM tbl_benutzer as a
LEFT JOIN tbl_listen as b ON a.UID = b.UID
WHERE
(a.GRUPPE=1 AND b.LISTID=3)
Code:
ID GRUPPE UID NAME ID LISTID UID EINTRAG
888 1 abc Peter 443 3 abc nix
Der von Dir gewünschte dritte Datensatz entspricht nicht den WHERE-Bedingungen - daher wird er auch nicht angezeigt bei der Abfrage.
Tipp: Sieh Dir den Schlüssel über den die beiden Tabellen miteinander verknüpft sind an und dann die WHERE-Bedingungen.
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert
Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!
Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
|

24.02.2012, 18:24:35
|
Anfänger
|
|
Registriert seit: Feb 2012
Alter: 44
Beiträge: 10
|
|
AW: SQL Join bei dem auf jeden Fall alle Einträge der linken Tabelle ausgegeben werde
Hallo,
ich glaube dir sofort, dass da irgendwo ein Verständnisproblem meinerseits liegt oder schlichtweg Unvermögen (bin kein SQL Profi). Jedoch schaff ich es seit 3 Tagen nicht, die Tabellen so wie gewünscht zu verknüpfen. Mit deinem Tipp komme ich leider nicht weiter! Irgendwie muss es doch möglich sein mein Ergebnis zu erhalten?!? Muss ich die Tabellen umstrukturieren? Ich komme nicht weiter!
|

25.02.2012, 01:11:16
|
 |
Administrator
|
|
Registriert seit: Jul 2004
Beiträge: 3.707
|
|
AW: SQL Join bei dem auf jeden Fall alle Einträge der linken Tabelle ausgegeben werde
Da sich der Sinn hinter den Tabellen nur schwer erahnen läßt und meine Glaskugel bereits im wohlverdienten Wochenende ist, wäre eine (kleine) Beschreibung der Tabellen von nöten.
Ansonsten kann ich Dir dies hier noch empfehlen Die fünf Normalformen.
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert
Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!
Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
|

27.02.2012, 12:06:01
|
Member
|
|
Registriert seit: Nov 2007
Beiträge: 843
|
|
AW: SQL Join bei dem auf jeden Fall alle Einträge der linken Tabelle ausgegeben werde
Hi
Zitat:
ich erwarte aber dieses Ergebnis, weil Peter, Hans und Kurt in Gruppe 1 sind:
|
Du fragst aber nicht nur nach Gruppe 1! Hans ist weder LISTID 3 noch ist er NULL
Code:
SELECT *
FROM tbl_benutzer as a
left JOIN tbl_listen as b
ON a.UID = b.UID and (b.LISTID=3 or b.LISTID is NULL)
WHERE
a.GRUPPE=1
So wird zwar angezeigt was du willst, aber ich bezweifel das bei wachsenden
einträgen du damit glücklich wirst...
Es gibt 2 Möglichkeiten:
1. Du nimmst den Link von vt1816 und liest den aufmerksam und baust um
oder
2. Bis in 3 Monaten wenn du hier folgende Frage stellst: "Meine Abfragen werden immer
langsamer wer kann helfen?"
mfg
CKaos
__________________
"Wenn die Leute Häuser so bauen würden, wie wir Programme schreiben, würde der erstbeste Specht unsere Zivilisation zerhacken."
In den allermeisten Fällen sitzt der Bug etwa 40 cm vor dem Monitor!
|

28.02.2012, 19:57:22
|
Anfänger
|
|
Registriert seit: Feb 2012
Alter: 44
Beiträge: 10
|
|
AW: SQL Join bei dem auf jeden Fall alle Einträge der linken Tabelle ausgegeben werde
Vielen Dank!
Ich habe die Seite des angegebenen Links schon ein wenig studiert und werde daran weiterarbeiten.
Nur noch so als Hinweis, was ich eigentlich bauen wollte:
Ich will/habe ein Eingabe-/Bearbeitungsformular mit allen Benutzern der ausgewählten Gruppe (z.B.1). Zu jeder Gruppe gibt es verschiedene Themenbereiche für Listeneinträge. Nun muss beim Aufruf der Seite (mit einen html/php Formular) die komplette Gruppe dargestellt sein, damit ich bei jeder Person einen neuen Listeneintrag erstellen bzw. bearbeiten kann.
Code:
NAME EINTRAG(für Liste1)
Peter nix
Hans ______
Kurt ______
Grüße
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Ansicht |
Linear-Darstellung
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 10:55:19 Uhr.
|