php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 09.08.2006, 14:40  
there's only one psycho
 
Benutzerbild von PsychoEagle
 
Registriert seit: 21.08.2007
Beiträge: 1.283
PHP-Kenntnisse:
Anfänger
PsychoEagle ist ein sehr geschätzer MenschPsychoEagle ist ein sehr geschätzer MenschPsychoEagle ist ein sehr geschätzer Mensch
PsychoEagle eine Nachricht über ICQ schicken PsychoEagle eine Nachricht über Skype™ schicken
Standard Abfrage mit LIKE (nur verkehrt rum :D)

Hi

ich weiss nicht, wo nach ich suchen sollte/muss und auch nicht wie ich es richtig erklären soll, damit man es versteht (oder beschreiben/nennen, wie auch immer).

Also folgendes Problem:

Ich hab in einer Datenbank verschiedene Datensätze von Benutzern, die haben bestimmte Postleitzahlteile (also nur die ersten 3 Ziffern, oder 4 oder wie auch immer (können auch alle sein).

Bei einer Eingabe einer ganzen Postleitzahl, sollen dann diese Datensätze angezeigt werden, welche übereinstimmen mit dem Teil.

Normalerweise benutzt man ja LIKE und dementsprechend noch %

Beispiel:
Code:
$sql = "SELECT nname, vname
           FROM user_daten
           WHERE abplz LIKE '". $plz ."%'";
aber das geht ja in meinem Fall nicht, da abplz ja nur der Teil ist und $plz die gesamte Postleitzahl.

Gibt es eine Möglichkeit es herumzudrehen?

Also beispielsweise in irgendeinerweise so:
Code:
$sql = "SELECT nname, vname
           FROM user_daten
           WHERE abplz% LIKE '". $plz ."'";
Funktioniert aber nicht so

Möchte das ganze ohne zusätzliche Abfrage machen

Danke für Hilfe
__________________
"Weaseling out of things is important to learn. It's what separates us from the animals ... except the weasel." (Homer J. Simpson)
PsychoEagle ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 09.08.2006, 14:55  
Erfahrener Benutzer
 
Registriert seit: 13.11.2005
Beiträge: 2.583
xabbuh
Standard

Zum Beispiel so:
Code:
WHERE abplz = LEFT('$plz', CHAR_LENGTH(abplz))
xabbuh ist offline   Mit Zitat antworten
Alt 09.08.2006, 15:09  
there's only one psycho
 
Benutzerbild von PsychoEagle
 
Registriert seit: 21.08.2007
Beiträge: 1.283
PHP-Kenntnisse:
Anfänger
PsychoEagle ist ein sehr geschätzer MenschPsychoEagle ist ein sehr geschätzer MenschPsychoEagle ist ein sehr geschätzer Mensch
PsychoEagle eine Nachricht über ICQ schicken PsychoEagle eine Nachricht über Skype™ schicken
Standard

Müsst ich mal testen. Was ist denn schneller von der Verarbeitung, Ausgabe etc?

Das was du gepostet hast, oder der umweg wie folgt:

PHP-Code:
<?php
          $plz 
'74564';

          
$sql "SELECT  nname, vname, abplz, anplz
                  FROM user_daten"
;
          
$qry mysql_query($sql) OR die(mysql_error());
          while(
$res mysql_fetch_assoc($qry)) {
            
$lenab strlen($res['abplz']);
            
$lenan strlen($res['abplz']);
            if(
$res['abplz'] == substr($plz0$lenab) AND $res['abplz'] == substr($plz0$lenan)) {
              
$i++;
              echo 
$i .") "$res['nname'] ." "$res['vname'] ."
\n"
;
            }
          }
?>
__________________
"Weaseling out of things is important to learn. It's what separates us from the animals ... except the weasel." (Homer J. Simpson)
PsychoEagle ist offline   Mit Zitat antworten
Alt 09.08.2006, 16:52  
there's only one psycho
 
Benutzerbild von PsychoEagle
 
Registriert seit: 21.08.2007
Beiträge: 1.283
PHP-Kenntnisse:
Anfänger
PsychoEagle ist ein sehr geschätzer MenschPsychoEagle ist ein sehr geschätzer MenschPsychoEagle ist ein sehr geschätzer Mensch
PsychoEagle eine Nachricht über ICQ schicken PsychoEagle eine Nachricht über Skype™ schicken
Standard

Ich hab mal Testweise meine gewollten Endanfragen 100x durchlaufen lassen, um zu schauen, welches die schnellere Variante ist. Dies machte ich 3 mal:

Zitat:
Zitat von Erster Durchgang
TIME PHP: 0.086323 sec.
TIME MySQL: 0.093907 sec.
Zitat:
Zitat von Zweiter Durchgang
TIME PHP: 0.140452 sec.
TIME MySQL: 0.149767 sec.
Zitat:
Zitat von Dritter Durchgang
TIME PHP: 0.095582 sec.
TIME MySQL: 0.092353 sec.
Im Endeffekt war dann der PHP Code schneller. Hier noch mein Quelltext. Aber was denkt ihr? Sind das vertrauenswürdige Daten?

Kann mir nicht vorstellen, dass der Qry mit mehr PHP Quellcode schneller ist, als der eine Query ohne schnickschnak.

Wär über eure Meinung dankbar, was ich am Besten nehmen sollte

PHP-Code:
<?php
for($var=1;$var<=100;$var++) {

  echo 
'ROUND #'$var ."
<hr/>"
;

  
$abplz  '74564';
  
$anplz  '74564';
  
$anland 'D';
  
$abland 'D';
  
$i      0;
  
$time   microtime();

          
$sql "SELECT     user_daten.nname AS nname,
                             user_daten.vname AS vname,
                             user_login.email AS email,
                             user_start.abplz AS abplz,
                             user_start.anplz AS anplz
                  FROM       user_daten
                  INNER JOIN user_start ON user_daten.firmaid = user_start.firmaid
                  INNER JOIN user_login ON user_daten.userid = user_login.userid
                  WHERE      user_start.start = 1 AND user_start.infomail = 1 AND 
                             (user_start.anland = '"
$anland ."' OR user_start.abland = '"$abland ."')";
          
$qry mysql_query($sql) OR die(mysql_error());
          while(
$res mysql_fetch_assoc($qry)) {
            
$lenab strlen($res['abplz']);
            
$lenan strlen($res['abplz']);
            if(
$res['abplz'] == substr($abplz0$lenab) AND $res['abplz'] == substr($anplz0$lenan)) {
              
// Quellcode
            
}
          }

  
$time microtime()-$time;
  
$time1 += $time;

  echo 
"<hr>\n";

  
$abplz  '74564';
  
$anplz  '74564';
  
$anland 'D';
  
$abland 'D';
  
$i      0;
  
$time   microtime();

  
$sql "SELECT     user_daten.nname AS nname,
                     user_daten.vname AS vname,
                     user_login.email AS email
          FROM       user_daten
          INNER JOIN user_start
          ON         user_daten.firmaid = user_start.firmaid
          INNER JOIN user_login
          ON         user_daten.userid = user_login.userid
          WHERE      user_start.start = 1 AND user_start.infomail = 1 AND
                     ((user_start.abland = '"
$anland ."' AND user_start.abplz = LEFT('"$abplz ."', CHAR_LENGTH(user_start.abplz))) OR 
                      (user_start.anland = '"
$abland ."' AND user_start.anplz = LEFT('"$anplz ."', CHAR_LENGTH(user_start.abplz))))";
  
$qry mysql_query($sql) OR die(mysql_error());
  while(
$res mysql_fetch_assoc($qry)) {
    
// Quellcode
  
}

  
$time microtime()-$time;
  
$time2 += $time;
}

echo 
"TIME PHP: "$time1 ." sec.
"
;
echo 
"TIME MySQL: "$time2 ." sec.";
?>
__________________
"Weaseling out of things is important to learn. It's what separates us from the animals ... except the weasel." (Homer J. Simpson)
PsychoEagle 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
komplizierte SQL-Abfrage keinplanvonnix PHP Tipps 2008 3 23.04.2008 15:42
UTF8 Dump erzeugt nach import in UTF8 kod DB falsche Umlaute Carino Datenbanken 18 07.05.2007 23:49
Abfrage mit NOT LIKE funktioniert nicht wirklich PsychoEagle Datenbanken 6 26.09.2006 11:45
LIKE und Suche nach Escape-Sequenzen bicpi Datenbanken 0 20.09.2006 13:39
Such-Statement-Problem Timo Trallala Datenbanken 1 22.07.2006 13:48
Abfrage mit LIKE Datenbanken 3 22.06.2006 10:38
[Erledigt] Problem mit Abfrage... Datenbanken 2 21.09.2005 16:34
Abfrage von mehreren Werten mit Hilfe von LIKE? PHP Tipps 2005-2 4 12.09.2005 19:19
Where Like - Abfrage zeigt Fehler Diego1978 PHP Tipps 2005-2 3 12.08.2005 23:25
NOT LIKE Abfrage bringt kein Ergebnis in leerem Feld PHP Tipps 2005 4 26.03.2005 15:25
Abfrage von Char-Feldern Datenbanken 9 04.02.2005 14:06
WHERE LIKE abfrage Datenbanken 2 06.01.2005 09:15
mysql verknüpfte abfrage mqs PHP Tipps 2004-2 2 22.11.2004 13:05
Diskussion zu Tutorial MySQL-Datenbank durchsuchen Guradia Off-Topic Diskussionen 9 22.10.2004 19:45
Abfrage aus DB noch mal ausgeben und Abfrage aus mehrern Tab PHP Tipps 2004 4 12.07.2004 15:00

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
sql plz like, plz abfragen mit like oder

Alle Zeitangaben in WEZ +1. Es ist jetzt 12:38 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

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.