PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr (https://www.php-resource.de/forum/)
-   SQL / Datenbanken (https://www.php-resource.de/forum/sql-datenbanken/)
-   -   Like %Spalte% geht nicht ?! (https://www.php-resource.de/forum/sql-datenbanken/83958-like-spalte-geht-nicht.html)

SusiSorglos 14-05-2007 07:36

Like %Spalte% geht nicht ?!
 
Hallo Ihr lieben,

Hab da noch so meine Probleme mit der Syntax.

Ich möchte um den SpaltenNamen ein % haben, nur ich bekomme
es einfach nicht hin, habe schon ne menge Vorzeichen ausprobiert
Kann mir jemand verraten wie es richtig geht !?
PHP-Code:

UPDATE kundennewplz
SET kunden
.bundesland newplz.bundesland
WHERE kunden
.plz like %newplz.plz

Cu Susi

MelloPie 14-05-2007 10:05

evt.
WHERE kunden.plz like CONCAT('%',newplz.plz,'%')

Nico_Schubert 14-05-2007 17:25

Re: Like %Spalte% geht nicht ?!
 
Zitat:

Original geschrieben von SusiSorglos
Hallo Ihr lieben,

Hab da noch so meine Probleme mit der Syntax.

Ich möchte um den SpaltenNamen ein % haben, nur ich bekomme
es einfach nicht hin, habe schon ne menge Vorzeichen ausprobiert
Kann mir jemand verraten wie es richtig geht !?
PHP-Code:

UPDATE kundennewplz
SET kunden
.bundesland newplz.bundesland
WHERE kunden
.plz like %newplz.plz

Cu Susi

Hallo,

Du musst Dein Suchwort in Anfürungszeichen setzen. Dann sollte es gehen.

UPDATE kunden, newplz SET kunden.bundesland = newplz.bundesland WHERE kunden.plz like '%suchwort%'

mfg. Nico

prego 14-05-2007 19:43

Warum eigentlich LIKE?

Du willst allen Kunden, die irgendwie in ihrer aktuellen Postleitzahl eine gewissen Zahlenkombination haben, die selbe "neue" Postleitzahl geben?

wahsaga 14-05-2007 22:28

Zitat:

Original geschrieben von prego
Du willst allen Kunden, die irgendwie in ihrer aktuellen Postleitzahl eine gewissen Zahlenkombination haben, die selbe "neue" Postleitzahl geben?
Nicht die PLZ soll upgedated werden, sondern das Bundesland.

SusiSorglos 15-05-2007 01:42

@ Nico
newplz.plz iss kein Suchwort sondern eine Spalte


Thänx @ MelloPie. So hat's geklappt.
Für die die jetzt nicht verstanden haben was ich wollte:

Ich habe eine Tabelle mit allen PLZ's und den dazugehörigen Bundesländern -> Landkreisen -> KFZ Zeichen usw.

Da Großstädte aber mehrere PLZ's haben habe ich für z.B. Köln alle in eine Spalte geschrieben und durch ein | getrennt.

50608|51143|51149|51147 usw.usw.

In PHP iss das kein Problem für mich gewesen aber SQL werd ich wohl nie verstehen ;-)

Es liegt wohl auch an der Doku von mySQL. Dort findet man einfach keine schönen Beispiele (so wie in der PHP-Manual)
Habe jetzt immer noch nicht verstanden was CONCAT eigentlich bewirkt. Aber ich werde noch dahinter kommen..

Cu & thänxx

Susij

ghostgambler 15-05-2007 02:44

CONCAT verbindet Strings

Übrigens: Normalisierung?
Dein Datenbank-Schema ist schlecht und dein WHERE plz LIKE-Query dürfe im live-Betrieb echt tödlich sein...

SusiSorglos 15-05-2007 10:11

Hmmm. Ich dachte so wie ich es vorher hatte wäre es schlecht.
Vorher:
Alles in einer Tabelle.
Anschrift-Kategorie-Timestamp(s)-Berechtigung-Benutzername-Passwort
Also Rund 34 Spalten bei ca 25.000 Einträgen.

Jetzt MÖCHTE ich

KNR-Benutzername-Passwort in eine Tabelle
und alles weitere per $_Session (knr) verlinken.

Die 25.000 Einträge je nach Kategorie (es gibt zur Zeit 2) in 2 Tabellen aufteilen. Da wie ich meine es wohl schneller ist
eine kleine Tabelle zu durchsuchen wie eine große.

Der User kann nach (plz%, %ort%, vorwahl%, %name%) suchen, sowie nach (= Bundesland) und dem daraus Resultierendem (= Landkreis)

Wie sollte ich es sonst machen? - Es läuft eigentlich recht schnell!

Oder meinst Du das UPDATE wonach ich fragte? Das war nur ne einmalige Sache. Hat ca 200 Sekunden gedauert :huep:
Wollte nur alle Suchergebnisse einheitlich haben damit nach Bundesland bzw. Landkreis gesucht werden kann.

Die Tabelle (newplz) wird nur dazu benötigt das wenn sich jemand Einträgt das er anhand der PLZ direkt seinem Bundesland & Landkreis zugeordnet wird. Das kommt aber in der Regel selten vor (~ 1 x Woche) da es sich um eine (sagen wir mal) FirmenDB handelt und sich da nicht jeden Tag welche hinzu kommen.
Zumal schon ca. 99 bzw. 90% der Firmen eingetragen sind (je nach Kategorie).


MelloPie 15-05-2007 10:33

also 25000 Einträge sind nicht wirklich viel, da brauchste keine 2 tabellen.

SusiSorglos 15-05-2007 11:23

Naja gut. Ich bin aber jetzt schon dabei alles umzustellen und je nach Kategorie werden nicht alle Spalten benötigt. also wird es sicherlich ein vorteil sein.

Aber ist ist wohl vorteilhafter wenn ich wenigstens die Benutzer in eine eigene Tabelle speichere?! Und diese per KNR verlinke ?
Dies wollte ich (wie bisher) per Session machen.

MelloPie 15-05-2007 11:38

dann würde ich trotzdem nicht nach kategorien die tabelen teilen sondern logisch normalisieren.

SusiSorglos 23-06-2007 12:25

PHP-Code:

UPDATE adressennewplz
SET adressen
.ort newplz.ort
WHERE adressen
.plz like CONCAT('%',newplz.plz,'%'

Brauche da doch nochmal Hilfe ;)

Und zwar ist mir grade aufgefallen das mein letztes Update gar nicht zu 100% geklappt hat.

Und zwar habe ich ja meine Tabelle(n) mit dem obigen Befehl geupdated.

Jetzt erst ist mir aufgefallen das CONCAT('%',newplz.plz,'%') zwar keinen Fehler bringt aber leider auch nicht zum Ziel führt.

Einige Orte haben ja mehrere PLZ's (50608| 51143| 51147| 51149) z.B.

Wie gesagt iss der befehl nur ne einmalige Sache. Also nicht wieder gleich schimpfen.

Cu Susi

ArSeN 23-06-2007 13:56

Zitat:

Und zwar ist mir grade aufgefallen das mein letztes Update gar nicht zu 100% geklappt hat.
Hmmm also wenn ich mal scharf über diese Fehlerbeschreibung nachdenke würde ich sagen, es liegt daran, dass du etwas falsch gemacht hast.

SusiSorglos 23-06-2007 23:11

Ja, ich merk schon Du bist ein Helles Köpfchen. Hilft mir nun aber auch nicht weiter.

Kann mir jemand weiterhelfen und mir erklären warum es mit dem '%newplz.plz%' nicht klappt ?!

Cu Susi

ArSeN 23-06-2007 23:35

Vielleicht war der Wink doch einfach zu undeutlich.

Gib uns eine Fehlerbeschreibung!!!

Besser?

Was heißt denn bitte "es geht nicht"? Sollen wir hellsehen, wass der MySQL-Server bei dir gemacht und was nicht, oder was? Ja moment ich hole schnell das Pendel und besorge noch etwas schweineblut beim Mitternachtsmetzger.

Was genau ist passiert? Was ist nicht passiert? Das nennt man Fehlerbeschreibung!


Alle Zeitangaben in WEZ +2. Es ist jetzt 00:12 Uhr.

Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.0
[c] ebiz-consult GmbH & Co. KG