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 |

23.02.2012, 20:33:17
|
Anfänger
|
|
Registriert seit: Feb 2012
Alter: 44
Beiträge: 10
|
|
SQL Join bei dem auf jeden Fall alle Einträge der linken Tabelle ausgegeben werden
Hallo,
ich habe 2 Tabellen. In der einen Tabelle stehen Benutzer, die Benutzergruppen (Gruppe 1,2,...) zugeordnet sind. In der zweiten Tabelle stehen mehrere oder keine Einträge zu jedem Benutzer.
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
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).
In diesem Fall müsste die Tabelle so ausgegeben werden:
Code:
Gruppe 1 mit Liste 1
____________________
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
5 1 mno Kurt
Bei allen meinen bißherigen Versuchen gab meine Abfrage nur die Benutzer aus, die auch einen Listeneintrag hatten.
Ich hoffe, dass mir jemand helfen kann.
|

23.02.2012, 20:59: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
Hallo und willkommen hier im Forum.
Und wie sehen Deine bisherigen (Miß-)Erfolge aus? Damit meine ich den Code und nicht die verbale Aussage.
__________________
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!
|

23.02.2012, 21:36:32
|
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
Naja, ich hab es mit unzähligen unterschiedlichen Varianten ausprobiert. JOIN, UNION, SELECT IF, .... Manchmal mit Fehlern manchmal mit falschen Ergebnissen.
Die Einfachste Variante, die die Tabellen verknüpft hat, war:
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 = 1
Nur fehlen hier eben alle Benutzer der Gruppe 1!
Wie kann ich diese SQL - Anweisung erweitern / verändern, damit auch die Benutzer ausgegeben werden, die keinen Linsteneintrag in der Liste 1 haben???
|

23.02.2012, 22:21:46
|
 |
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
PHP-Code:
$sql = "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=1)";
__________________
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!
|

23.02.2012, 22:37:07
|
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
Danke erst einmal.
Eigentlich gute Idee, aber bei mir gibt es trotzdem nicht alle Benutzer der Gruppe 1 aus, nur die einen Eintrag in der Listen-Tabelle haben :-(! (MySql 5.0.22)
Hinweis: Wenn ich
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)
eingebe, kommen gar keine Datansätze. Ich denke, das könnte daran liegen, dass b.UID in manchen fällen gar nicht vorhanden ist. Also der JOIN über a.UID = b.UID liefert nur Ergebnisse wenn b.UID und a.UID vorhanden ist!?!
Noch einen Tipp?
|

23.02.2012, 22:46:58
|
 |
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
Bitte die Tabellenstrukturen als formatierten Text hier ins Forum stellen.
Code:
mysql>SHOW CREATE TABLE tbl_benutzer;
mysql>SHOW CREATE TABLE tbl_listen;
__________________
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!
|

23.02.2012, 23:02: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
Code:
CREATE TABLE `user` (
`id` int(10) NOT NULL auto_increment,
`kid` int(6) default NULL,
`uid` varchar(32) NOT NULL default '',
`nn` varchar(100) character set latin1 collate latin1_german1_ci NOT NULL,
`vn` varchar(100) character set latin1 collate latin1_german1_ci NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uid` (`uid`)
) ENGINE=MyISAM AUTO_INCREMENT=888 DEFAULT CHARSET=latin1
CREATE TABLE `listen` (
`id` int(10) NOT NULL auto_increment,
`list_id` int(10) NOT NULL default '0',
`kid` int(10) NOT NULL default '0',
`uid` varchar(32) NOT NULL default '',
`txt` varchar(255) default NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=437 DEFAULT CHARSET=latin1
(Ich weiß, dass die Struktur noch verbessert werden sollte, aber ist noch im Entwicklungsstadium)
Und? Hilft das?
|

23.02.2012, 23:11:07
|
 |
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
Sorry, aber Deine Struktur passt nicht zu Deiner Fragestellung/Deinen Vorgaben.
Bringe die Unterschiede in Übereinstimmung, dann können wir weiter machen.
__________________
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!
|

23.02.2012, 23:16:49
|
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
Weil die Spalten anders benannt sind?
Wie schaut es mit dem aus?
Code:
CREATE TABLE `tbl_benutzer` (
`ID` int(10) NOT NULL auto_increment,
`GRUPPE` int(6) default NULL,
`UID` varchar(32) NOT NULL default '',
`NAME` varchar(100) character set latin1 collate latin1_german1_ci NOT NULL,
PRIMARY KEY (`ID`),
UNIQUE KEY `UID` (`UID`)
) ENGINE=MyISAM AUTO_INCREMENT=888 DEFAULT CHARSET=latin1
CREATE TABLE `tbl_listen` (
`ID` int(10) NOT NULL auto_increment,
`LISTID` int(10) NOT NULL default '0',
`UID` varchar(32) NOT NULL default '',
`EINTRAG` varchar(255) default NULL,
PRIMARY KEY (`ID`)
) ENGINE=MyISAM AUTO_INCREMENT=437 DEFAULT CHARSET=latin1
Ich hoffe, dass es nun einen Sinn gibt!
|

23.02.2012, 23:23: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
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) OR
(a.GRUPPE=1 AND b.LISTID=1)
ergibt:
Code:
ID GRUPPE UID NAME ID LISTID UID EINTRAG
888 1 abc Peter 437 1 abc Peter ist groß
889 1 def Hans 438 1 def Hans ist reich
892 1 mno Kurt NULL NULL NULL NULL
Was willst Du mehr - das og. SQL-Statment passt!
__________________
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!
|
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 01:11:27 Uhr.
|