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 ::

Das Zend Framework

Das Zend Framework 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
  #1  
Alt 01.10.2010, 13:14:24
CrashOverwrite CrashOverwrite ist offline
Anfänger
 
Registriert seit: Oct 2010
Alter: 42
Beiträge: 5
Suche über zwei Felder inklusive Join

Eigentlich was relativ banales: ich habe Personen mit Vor- und Nachnamen und eine Person kann eine Page haben.
So und jetzt will ich eine Page über die Person suchen, d.h. mit Suche nach dem Namen.
Dazu will ich im kompletten Namen suchen, so dass ich zB nach "Max Mustermann" suchen kann.
Das klappt auch soweit auch problemlos, aber sobald ich einen Join mit der Page-Tabelle mach bekomme ich kein Ergebnis mehr.

Also konkret:

Code:
SELECT * FROM person WHERE CONCAT(person.firstname, ' ', person.lastname) LIKE "%Max M%"
das funktioniert, aber das:

Code:
SELECT * FROM page LEFT JOIN person ON page.person_id = person.id WHERE CONCAT(person.firstname, ' ', person.lastname) LIKE "%Max M%"
funktioniert nicht mehr :(

Dürfte doch eigentlich nicht so schwer sein *grübl*
Mit Zitat antworten
  #2  
Alt 04.10.2010, 20:46:30
thomas_w thomas_w ist offline
Junior Member
 
Registriert seit: Aug 2010
Alter: 14
Beiträge: 395
AW: Suche über zwei Felder inklusive Join

Versuche doch mal die Reihenfolge der Tabellen zu tauschen.

Also z. B. so

Code:
SELECT * 
  FROM person 
  LEFT JOIN page 
    ON page.person_id = person.id 
 WHERE CONCAT(person.firstname, ' ', person.lastname) LIKE "%Max M%"
Grüße
Thomas
__________________
Die SQL-Backstube
Bietet Rezepte, Lösungen und ausführliche Beispiele rund um gesundes SQL und zufriedene Datenbanken.
Mit Zitat antworten
  #3  
Alt 06.10.2010, 07:26:44
Ckaos Ckaos ist offline
Member
 
Registriert seit: Nov 2007
Beiträge: 843
AW: Suche über zwei Felder inklusive Join

Bei deiner (CrashOverwrite) abfrage muss die Person per id in der Tabelle page vorkommen und bei thomas_w seiner Tauschaktion muss die person vorkommen.

Schau dir mal Joins's genauer an.
http://www.selfphp.de/forum/showthread.php?t=22220

Denn anstatt zu "tauschen" hätte wohl auch ein right join gereicht.
Code:
SELECT * 
FROM page 
RIGHT JOIN person ON page.person_id = person.id 
WHERE CONCAT(person.firstname, ' ', person.lastname) LIKE "%Max M%"
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
  #4  
Alt 06.10.2010, 15:44:25
CrashOverwrite CrashOverwrite ist offline
Anfänger
 
Registriert seit: Oct 2010
Alter: 42
Beiträge: 5
AW: Suche über zwei Felder inklusive Join

vielen vielen Dank! :) der Right Join wars!
Aber so gaaaaanz check ichs noch ned, was fehlt dem left join? wenn ich mir das left join ergebnis (ohne eingrenzung) anschaue dann hab ich alles was ich brauche.
Die Grafik raff ich auch ned so wirklich, was symbolisiert das rote? Wenn das Rote das Ergebnis ist, dann würde ja bei nem Right Join alles von der ersten Tabelle fehlen was nicht auch in der zweiten ist, was aber nicht stimmt. Also zB hat meine Page einen Title und der ist nach dem Right Join auch weiterhin da.
Mit Zitat antworten
  #5  
Alt 06.10.2010, 19:56:55
Ckaos Ckaos ist offline
Member
 
Registriert seit: Nov 2007
Beiträge: 843
AW: Suche über zwei Felder inklusive Join

Hi

du verbindest die beiden Tabellen per

Code:
page.person_id = person.id
wenn in page -> person_id nicht vorkommt gibt es keine Verbindung
also ruft er auch nicht aus person die Daten ab.

Vielleicht verdeutigt dir folgendes das was du im Bild nicht erkennst
_____________________________________
Tabelle: page..................Tabelle: person
person_id | irgendwas......id | irgendwas
1.............| abc ...............1 | def
......................................2 | ghi
_____________________________________

Code:
page left join person on page.person_id = person.id
Ergebnis:
person_id | irgendwas......id | irgendwas
1.............| abc ...............1 | def

Code:
page right join person on page.person_id = person.id
Ergebnis:
person_id | irgendwas......id | irgendwas
1.............| abc ...............1 | def
null..........| null................2 | ghi

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
  #6  
Alt 06.10.2010, 20:00:22
CrashOverwrite CrashOverwrite ist offline
Anfänger
 
Registriert seit: Oct 2010
Alter: 42
Beiträge: 5
AW: Suche über zwei Felder inklusive Join

Zitat:
Zitat von Ckaos Beitrag anzeigen
Hi
wenn in page -> person_id nicht vorkommt gibt es keine Verbindung
also ruft er auch nicht aus person die Daten ab.
hö? aber natürlich hab ich einen Foreign Key person_id in der page tabelle ;)
Mit Zitat antworten
  #7  
Alt 06.10.2010, 20:51:31
Ckaos Ckaos ist offline
Member
 
Registriert seit: Nov 2007
Beiträge: 843
AW: Suche über zwei Felder inklusive Join

hi
bezogen auf kann
Zitat:
Zitat von CrashOverwrite Beitrag anzeigen
und eine Person kann eine Page haben
Wenn sie aber keine hat fehlt eben diese eben für die Verbindung.

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
  #8  
Alt 06.10.2010, 23:58:57
CrashOverwrite CrashOverwrite ist offline
Anfänger
 
Registriert seit: Oct 2010
Alter: 42
Beiträge: 5
AW: Suche über zwei Felder inklusive Join

hmmmmm klar fehlt dann die verbindung, aber dann interessiert mich die person ja auch ned, wenn sie keine page hat, weil ich ja nach pages der person suche ;)

mit dem right join funktioniert das ja nun, aber ich muss zusätzlich noch abfragen ob im result es auch eine page gibt, weil es ja, wie du schon richtig sagst, auch personen ohne page geben kann.

wie gesagt, wenn ich mir das ergebnis des left joins ansehe, dann ist da alles drin was ich brauche und ich check ned wieso er dann nix findet wenn ich im konkatinierten vor-/nachnamen suche. *doofschau*

also mir ist, denke ich, der unterschied zwischen left und right join klar, ich kapier eben nur nicht wieso ich im left join ergebnis nicht nach dem namen suchen kann.

Geändert von CrashOverwrite (07.10.2010 um 00:22:18 Uhr)
Mit Zitat antworten
  #9  
Alt 07.10.2010, 07:37:42
Ckaos Ckaos ist offline
Member
 
Registriert seit: Nov 2007
Beiträge: 843
AW: Suche über zwei Felder inklusive Join

Hi
Zitat:
wie gesagt, wenn ich mir das ergebnis des left joins ansehe, dann ist da alles drin was ich brauche und ich check ned wieso er dann nix findet wenn ich im konkatinierten vor-/nachnamen suche. *doofschau*
Da schau ich auch doof denn bei einer nachgestellten Umgebung bei mir funktionieren die Abfragen (inkl. deiner).

Zitat:
Zitat von CrashOverwrite Beitrag anzeigen
also mir ist, denke ich, der unterschied zwischen left und right join klar
hört sich hier nicht danach an
Zitat:
Die Grafik raff ich auch ned so wirklich, was symbolisiert das rote?
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
  #10  
Alt 07.10.2010, 10:09:29
CrashOverwrite CrashOverwrite ist offline
Anfänger
 
Registriert seit: Oct 2010
Alter: 42
Beiträge: 5
AW: Suche über zwei Felder inklusive Join

ok was hast du an meiner DB gemacht? :P
jetzt gehts mit Left Join bei mir auch wunderbar ;)
*aaaaaaaaargh* hatte bestimmt irgend einen kleinen schreibfehler drin oder sonst was
der ganze thread ist damit hinfällig :D ich werd bekloppt ;)

thanks anyway :)
Mit Zitat antworten
Antwort

Stichworte
suche


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
LEFT JOIN Problematik x_merlin_x MySQLi/PDO/(MySQL) 0 18.05.2010 11:49:18
Suche erweitern Lutz MySQLi/PDO/(MySQL) 3 09.04.2010 21:54:23
Using filesort / temporary - JOIN, GROUP BY, ORDER BY ryda MySQLi/PDO/(MySQL) 4 08.05.2009 22:06:05
Suche nach Wörtern in zwei Felder in einer Tabelle? Jürgen-M MySQLi/PDO/(MySQL) 4 10.03.2008 12:39:10
mysql query mit Join problem Silencer PHP für Fortgeschrittene und Experten 4 18.03.2003 15:38:31


Alle Zeitangaben in WEZ +2. Es ist jetzt 22:52:03 Uhr.


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


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