php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 01.08.2011, 04:19  
Benutzer
 
Registriert seit: 10.02.2010
Beiträge: 75
PHP-Kenntnisse:
Anfänger
levans befindet sich auf einem aufstrebenden Ast
Standard Suchen in 2 Datenbankspalten gleichzeitig

Hallo,

ich habe bereits auf einigen Seiten geschaut, wie ich das Suchen in zwei Datenbankspalten gleichzeitig, realisieren kann. Da hatte ich UNION, UNION ALL und LEFT JOIN gefunden und ausprobiert, aber alle 3 Varianten funktionierten leider nicht.

Das ist der Code:

PHP-Code:
  if ($name) {
$abfrage " AND (name LIKE '%"$name ."%' OR name LIKE '%"$name ."%"$name ."%')";
  }

$result mysql_query("SELECT name FROM "$conf['db_prefix'] ."_bewertungen WHERE status='1'"$abfrage ." LIMIT ".$start.",".$eps); 
Wenn im Bewertungstitel "Super" auftaucht findet die Suche den Eintrag "Super test 123" aus der Datenbanktabelle _bewertungen aber wie mache ich das nun, dass wenn es auch in der Datenbanktabelle _spielzeugladen einen Shop mit dem Wort Super gibt z.B. "Super Laden"... Diesen Eintrag würde ich dann auch gerne in den Suchergebnissen angezeigt haben...

Würde mich freuen für ein Tipp
levans ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 01.08.2011, 06:31  
Erfahrener Benutzer
 
Registriert seit: 28.06.2009
Beiträge: 109
PHP-Kenntnisse:
Fortgeschritten
eisenhans befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von levans Beitrag anzeigen
Da hatte ich UNION, UNION ALL und LEFT JOIN gefunden und ausprobiert, aber alle 3 Varianten funktionierten leider nicht.
Was genau funktioniert denn an deinem JOIN nicht ?
__________________
Webstammtisch Oldenburg
eisenhans ist offline   Mit Zitat antworten
Alt 01.08.2011, 07:41  
Benutzer
 
Registriert seit: 25.01.2011
Beiträge: 59
PHP-Kenntnisse:
Fortgeschritten
Renner befindet sich auf einem aufstrebenden Ast
Standard

Join eignet sich für eine Suche, welche Werte entweder in der ersten oder in der zweiten Tabelle finden soll, überhaupt nicht. Joins sind dafür da, um Werte aus Tabelle1 Werten in Tabelle2 gegenüberzustellen.

Das "Problem" kann jedoch leicht mit einem Union gelöst werden. Wichtig hierbei ist, dass die Anzahl und Wertebereiche der selektierten Spalten identisch sind. Zur Not eben mit Null auffüllen. Soll die Herkunft des Wertes bekannt bleiben, kann man das über ein "Tabelle1" as type bzw "Tabelle2" as type lösen.

Das sieht dann so aus:

PHP-Code:
SELECT spalte1spalte2"tabelle1" as type FROM tabelle1 WHERE ...
UNION
SELECT spalte1
spalte2"tabelle2" as type FROM tabelle2 WHERE ... 
Renner ist offline   Mit Zitat antworten
Alt 01.08.2011, 08:26  
Erfahrener Benutzer
 
Registriert seit: 01.06.2011
Beiträge: 390
PHP-Kenntnisse:
Anfänger
achtelpetit befindet sich auf einem aufstrebenden Ast
Standard

Da UNION-Abfragen keinen Index nutzen können, solltest Du auch probieren, einfach 2 Abfragen laufen zu lassen. Das könnte schneller als UNION sein.
achtelpetit ist offline   Mit Zitat antworten
Alt 01.08.2011, 08:41  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

du musst natürlich bei allen Varianten deine Suchbedingung für JEDE Tabelle erneut aufführen - MySQL dehnt die nicht automatisch auf weitere Spalten aus, nur weil die beim Select mit erfasst werden
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Alt 01.08.2011, 14:32  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Wieso kann eine UNION Abfrage keine Indexe nutzen?
Flor1an ist offline   Mit Zitat antworten
Alt 01.08.2011, 16:14  
Erfahrener Benutzer
 
Registriert seit: 01.06.2011
Beiträge: 390
PHP-Kenntnisse:
Anfänger
achtelpetit befindet sich auf einem aufstrebenden Ast
Standard

Ich habe mich vielleicht ungenau ausgedrückt: für das Erstellen der UNION kann MySql Indizes nutzen; das Resultat hat jedoch keinen Index mehr und kann also nur noch per Tablescan durchsucht werden.
Es ist also im Allgemeinen ungünstig, das Resultat einer Union-Abfrage als Grundlage einer Suche zu nehmen.

Jetzt habe ich mir auch nochmal die Startfrage des Threads angeschaut: mit LIKE, eingeschlossen zwischen Wildcards, ist sowieso keine Indexnutzung möglich.
achtelpetit ist offline   Mit Zitat antworten
Alt 01.08.2011, 16:19  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

da hast du was falsch herum verstanden Achtel ... er soll erst suchen und aus den Ergebnissen der Suche per Union eine einzige Ergebnistabelle erstellen
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Alt 01.08.2011, 16:33  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Ja das dachte ich mir so
Flor1an ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Algorithmus für: Es sind nur xyz Anfragen gleichzeitig möglich. Curcio Server, Hosting und Workstations 2 16.10.2010 18:06
fsockopen - nur eine Verbindung gleichzeitig? oli004 PHP-Fortgeschrittene 4 06.09.2010 11:39
[Erledigt] INSERT und UPDATE gleichzeitig? estebu Datenbanken 8 05.10.2009 00:35
Dateiupload - mehrer Dateien gleichzeitig asyoulikeit PHP Tipps 2008 3 11.06.2008 08:49
Dateien Packen und gleichzeitig streamen sponer PHP-Fortgeschrittene 3 15.03.2006 17:44
Aus zwei verschiedenen Tabelle gleichzeitig lesen TheTommynator PHP Tipps 2006 16 31.01.2006 13:31
Variablen an 2 Seiten gleichzeitig übergeben PHP Tipps 2006 7 04.01.2006 14:23
GET und POST gleichzeitig verwenden ? PHP Tipps 2005 6 17.03.2005 03:20
2 Funktionen gleichzeitig laden CSS HTML, Usability und Barrierefreiheit 1 08.02.2005 19:54
mehrere Zeilen gleichzeitig einfügen Calexico Datenbanken 1 04.01.2005 13:32
[Erledigt] $_POST an 2 Frames gleichzeitig schicken ????? PHP Tipps 2004 4 29.10.2004 16:09
Mehrere Abfragen gleichzeitig ausführen Neo2k3 Datenbanken 2 06.10.2004 21:47
Dreamweaver - viele dateien gleichzeitig mit CSS-File HTML, Usability und Barrierefreiheit 1 21.09.2004 14:13
2 frames gleichzeitig updaten HTML, Usability und Barrierefreiheit 4 03.08.2004 17:36
Eintragen von mehreren Einträgen gleichzeitig PHP Tipps 2004 3 15.07.2004 08:01

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
datenbankspalten, suchen in datenbanken, such über zwei datenbankspalten, php mehrere where suchen, zwei datenbanken gleichzeitig durchsuchen, php zwei mysql datenbank gleichzeitig öffnen und durchsuchen, php mysql suche in 2 spalten, suchen in 2 spalten, mysql mehrere spalten durchsuchen

Alle Zeitangaben in WEZ +2. Es ist jetzt 15:58 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum