php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 07-11-2007, 14:18
zerni
 Member
Links : Onlinestatus : zerni ist offline
Registriert seit: Oct 2006
Beiträge: 268
zerni ist zur Zeit noch ein unbeschriebenes Blatt
Standard LIKE und JOINS

Hi!

Kann es sein, dass folgendes nicht funktioniert:

SELECT *
FROM table1, table2
WHERE table1.table2_id = table2.id
AND table2.id LIKE '%00%'

Es geht jetzt besonders um den Teil hinter dem WHERE.
__________________
Killerspiele sollten in der Größenordnung von Kinderpornografie eingeordnet werden.(G. Beckstein)
- ...und solche Behauptungen in "falsches Resourcenmanagement"
Mit Zitat antworten
  #2 (permalink)  
Alt 07-11-2007, 14:34
ministry
 PHP Junior
Links : Onlinestatus : ministry ist offline
Registriert seit: Jun 2006
Ort: KI / KA
Beiträge: 965
ministry ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Das mit dem LIKE ist richtig, aber der JOIN ist falsch. Mach einen INNER oder einen LEFT JOIN draus, mit entsprechender Join-Bedingung.
__________________
ich glaube
Mit Zitat antworten
  #3 (permalink)  
Alt 07-11-2007, 14:56
H2O
 PHP Junior
Links : Onlinestatus : H2O ist offline
Registriert seit: Jul 2007
Beiträge: 937
H2O ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von ministry
Das mit dem LIKE ist richtig, aber der JOIN ist falsch.
Der Join ist nicht wirklich falsch, höchstens schlecht. Und SELECT * FROM mit Joins grenzt an ein Verbrechen. Trotzdem sollte die Abfrage funktionieren.
Sag mal, was das Attribut table2.id für einen Datentyp hat, und was für Werte da drin sind, die gefunden werden sollen. Und die Übereinstimmungen der entsprechenden id's muss natürlich auch vorhanden sein.
__________________
Gruss
H2O
Mit Zitat antworten
  #4 (permalink)  
Alt 07-11-2007, 15:15
zerni
 Member
Links : Onlinestatus : zerni ist offline
Registriert seit: Oct 2006
Beiträge: 268
zerni ist zur Zeit noch ein unbeschriebenes Blatt
Standard

das war lediglich ein fiktives beispiel, deshalb *

id ist der Primary Key: int, 5 stellig mit zerofill d.h. 00001, 00002, ...0000n

Die Übereinstimmung des pk und fk stimmen also der Join funktioniert schon. Er findet ja auch etwas sobald ich das LIKE '%000%' bzw. LIKE '00001' durch ein = '00001' austausche
__________________
Killerspiele sollten in der Größenordnung von Kinderpornografie eingeordnet werden.(G. Beckstein)
- ...und solche Behauptungen in "falsches Resourcenmanagement"

Geändert von zerni (07-11-2007 um 15:36 Uhr)
Mit Zitat antworten
  #5 (permalink)  
Alt 07-11-2007, 15:30
H2O
 PHP Junior
Links : Onlinestatus : H2O ist offline
Registriert seit: Jul 2007
Beiträge: 937
H2O ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Das funktioniert so natürlich nicht. Sowohl das ZEROFILLED, als auch die Länge eines nummerischen Attributes, beziehen sich ausschliesslich auf die Darstellung, nicht auf die Speicherung. Auf letztere hast du keinen Einfluss. Deshalb musst du die Abfrage auch nummerisch gestalten. Wenn du also - was deine Abfrage suggeriert - alle höchsten dreistelligen Werte haben willst, lautet die Abffrage:
Code:
WHERE table2.id < 10000
__________________
Gruss
H2O
Mit Zitat antworten
  #6 (permalink)  
Alt 07-11-2007, 15:41
zerni
 Member
Links : Onlinestatus : zerni ist offline
Registriert seit: Oct 2006
Beiträge: 268
zerni ist zur Zeit noch ein unbeschriebenes Blatt
Standard

es geht darum, dass ich eine on the fly suche mit ajax habe und dort die ID nach und nach eingegeben und ein EventObserver nach 1,5 Sek. ohne Eingabe die SQL Query ausführt wird.

d.h. erst:
0
000
00004

Wie wäre das anders zu realisieren als mit LIKE? Würdest du vllt INSTR(str,substr) dafür nutzen?

Das würde ja aber auch nichts bringen, da lediglich bei der Darbietung der Daten das Zerofill genutzt wird.

Ich würde das Feld eher ungern als varchar deklarieren...
__________________
Killerspiele sollten in der Größenordnung von Kinderpornografie eingeordnet werden.(G. Beckstein)
- ...und solche Behauptungen in "falsches Resourcenmanagement"

Geändert von zerni (07-11-2007 um 16:22 Uhr)
Mit Zitat antworten
  #7 (permalink)  
Alt 07-11-2007, 16:28
H2O
 PHP Junior
Links : Onlinestatus : H2O ist offline
Registriert seit: Jul 2007
Beiträge: 937
H2O ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Da wird dir nichts anderes übrig bleiben, als entweder gescheitere Daten zu liefern, oder diese in deinem Script in einen nummerischen Zusammenhang zu bringen, z.B.
  • 0 => < 10000
  • 000 => < 1000
  • 0004 => BETWEEN 40 AND 49
Ich kann mir allerdings micht vorstellen, was das Ganze überhaupt soll. Eine Id sollte ja keine Bedeutung haben, deshalb macht eine Abfrage darauf auch keinen Sinn. Und so, wie du die Werte abfragen willst, sieht es aus, als hätte die Id sogar verschiedene Bedeutungen, d.h. jede Stelle eine weitere. Da bekommst du wahrscheinlich ein Problem mit der Datenstruktur.
__________________
Gruss
H2O
Mit Zitat antworten
  #8 (permalink)  
Alt 07-11-2007, 16:37
zerni
 Member
Links : Onlinestatus : zerni ist offline
Registriert seit: Oct 2006
Beiträge: 268
zerni ist zur Zeit noch ein unbeschriebenes Blatt
Standard

naja die id ist gleichzeitig eine Kundennr.

und Probleme mit der Struktur gibt es da eigentlich keine. Dann werd ich wohl keine Livesuche für die Kundennr. anbieten.
__________________
Killerspiele sollten in der Größenordnung von Kinderpornografie eingeordnet werden.(G. Beckstein)
- ...und solche Behauptungen in "falsches Resourcenmanagement"
Mit Zitat antworten
  #9 (permalink)  
Alt 07-11-2007, 16:48
H2O
 PHP Junior
Links : Onlinestatus : H2O ist offline
Registriert seit: Jul 2007
Beiträge: 937
H2O ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von zerni
Dann werd ich wohl keine Livesuche für die Kundennr. anbieten.
Oder du speicherst die Kundennummer als String und fügst der Tabelle eine echte, vom System vergebene Id zu.
Allerdings bin ich der Meinung, dass auch diese Abfragen auf bestimmte Stellen der Kundennummer keinen Sinn machen, da man eine Kundennummer entweder weiss - dann kann man auf die Ganze abfragen - oder eben nicht.
__________________
Gruss
H2O
Mit Zitat antworten
  #10 (permalink)  
Alt 07-11-2007, 19:39
PHP-Desaster
 PHP Expert
Links : Onlinestatus : PHP-Desaster ist offline
Registriert seit: Mar 2006
Beiträge: 3.105
PHP-Desaster befindet sich auf einem aufstrebenden Ast
Standard

Oder du sparst dir das Zerofill! Wenn dir die Kundennummern dann "zu kurz" werden, beginne halt erst bei 10000!
Mit Zitat antworten
Antwort

Lesezeichen


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

Themen-Optionen
Thema bewerten
Thema bewerten:

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 an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 06:44 Uhr.