SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



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



:: Buchempfehlung ::

Der CSS-Problemlöser

Der CSS-Problemlöser zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > MySQLi/PDO/(MySQL)
Hilfe Community Kalender Heutige Beiträge Suchen

MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren

Antwort
 
Themen-Optionen Ansicht
  #11  
Alt 24.02.2012, 12:23:00
towbee towbee ist offline
Anfänger
 
Registriert seit: Feb 2012
Alter: 43
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)
Angehängte Dateien
Dateityp: pdf tbl2.pdf (292,9 KB, 4x aufgerufen)
Mit Zitat antworten
  #12  
Alt 24.02.2012, 13:03:44
Benutzerbild von vt1816
vt1816 vt1816 ist offline
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 Beitrag anzeigen
[..]
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!
Mit Zitat antworten
  #13  
Alt 24.02.2012, 13:38:19
towbee towbee ist offline
Anfänger
 
Registriert seit: Feb 2012
Alter: 43
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?!?
Mit Zitat antworten
  #14  
Alt 24.02.2012, 14:39:55
Benutzerbild von vt1816
vt1816 vt1816 ist offline
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 Beitrag anzeigen
[..]
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!
Mit Zitat antworten
  #15  
Alt 24.02.2012, 15:00:02
towbee towbee ist offline
Anfänger
 
Registriert seit: Feb 2012
Alter: 43
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.
Mit Zitat antworten
  #16  
Alt 24.02.2012, 16:59:26
Benutzerbild von vt1816
vt1816 vt1816 ist offline
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 
LEFT JOIN tbl_listen 
as b ON a.UID b.UID 
WHERE 
(a.GRUPPE=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 
LEFT JOIN tbl_listen 
as b ON a.UID b.UID 
WHERE 
(a.GRUPPE=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!
Mit Zitat antworten
  #17  
Alt 24.02.2012, 17:24:35
towbee towbee ist offline
Anfänger
 
Registriert seit: Feb 2012
Alter: 43
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!
Mit Zitat antworten
  #18  
Alt 25.02.2012, 00:11:16
Benutzerbild von vt1816
vt1816 vt1816 ist offline
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!
Mit Zitat antworten
  #19  
Alt 27.02.2012, 11:06:01
Ckaos Ckaos ist offline
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!
Mit Zitat antworten
  #20  
Alt 28.02.2012, 18:57:22
towbee towbee ist offline
Anfänger
 
Registriert seit: Feb 2012
Alter: 43
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
Mit Zitat antworten
Antwort

Stichworte
join, mysql


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

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.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Zwei Werte aus erster Tabelle mit ein Wert aus zweiter Tabelle (LEFT JOIN) verknüpfen horn-consulting MySQLi/PDO/(MySQL) 2 18.11.2011 13:32:40
Brauche Hilfe Partygirl MySQLi/PDO/(MySQL) 10 01.03.2011 08:18:11
Werte aller Einträge der Tabelle ändern Wiesel82 MySQLi/PDO/(MySQL) 9 05.02.2010 12:36:38
SQL update mit JOIN allanon MySQLi/PDO/(MySQL) 3 10.11.2009 06:02:54
(inner join) Bezug einer Tabelle auf sich selbst braindead2000 MySQLi/PDO/(MySQL) 2 13.12.2007 14:08:53


Alle Zeitangaben in WEZ +2. Es ist jetzt 21:07:34 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt