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 Bewertung: Bewertung: 1 Stimmen, 4,00 durchschnittlich.
  #1 (permalink)  
Alt 19-11-2009, 17:55
xJonx
 Registrierter Benutzer
Links : Onlinestatus : xJonx ist offline
Registriert seit: Mar 2006
Ort: Bielefeld
Beiträge: 421
xJonx zeigte ein beschämendes Verhalten in der Vergangenheit
Standard order by mit 100% ergebnissen zu erst

Hi Forum,

ich hab hier gerade ein interessantes Problem, bei dem Ich leider auch nicht weiter komme.

Ich habe in einer Modeldatenbank als Beispiel den Brustumfang hinterlegt.
Nun will ich bei der Suche nach einer Größe (hier 90), eine Toleranz von 14 bzw 7 in jede Richtung einsetzen ...

Such begriff 90 sähe das zB so aus:
PHP-Code:
SELECT FROM `modelsWHERE (`chest` > "83" AND `chest` < "97") AND `draft` = 0 ORDER BY `chestDESC LIMIT 0,
Das Problem was ich jetzt habe, das ich in der Sortierung eigentlich die 100% Treffer als erstes Ausgeben müsste. Weil wenn ich nen Typen mit 90 Brustumfang suche, will Ich ja nicht zu erst nen 97er haben.

Die große Frage wäre daher nun: wie kann ich das am sinnvollsten in einem String ermöglichen?

Ich würde gerne den nachfolge Prozess von dieser Änderungen unbeeinträchtigt lassen und somit alles in der SQL Abfrage abarbeiten.

Grüße,
Jon
__________________
Design & Coding with a breeze of madness at xjonx
Mit Zitat antworten
  #2 (permalink)  
Alt 19-11-2009, 17:57
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Änder erst mal das hier.
PHP-Code:
`chest` > 83 AND `chest` < 97 
Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #3 (permalink)  
Alt 19-11-2009, 18:02
xJonx
 Registrierter Benutzer
Links : Onlinestatus : xJonx ist offline
Registriert seit: Mar 2006
Ort: Bielefeld
Beiträge: 421
xJonx zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Zitat:
Zitat von Kropff Beitrag anzeigen
Änder erst mal das hier.
PHP-Code:
`chest` > 83 AND `chest` < 97 
Peter
du meinst die anführungsstriche wegen INT() suche?
__________________
Design & Coding with a breeze of madness at xjonx
Mit Zitat antworten
  #4 (permalink)  
Alt 19-11-2009, 18:13
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Bilde einfach noch den Betrag der Differenz zwischen gesuchtem und gefundenem Wert, und sortiere danach.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #5 (permalink)  
Alt 19-11-2009, 18:25
xJonx
 Registrierter Benutzer
Links : Onlinestatus : xJonx ist offline
Registriert seit: Mar 2006
Ort: Bielefeld
Beiträge: 421
xJonx zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

ok. das klingt logisch. mag mir jmd kurz erklären wie das genau geht?
also aufbau oder "befehl" ?
__________________
Design & Coding with a breeze of madness at xjonx
Mit Zitat antworten
  #6 (permalink)  
Alt 19-11-2009, 18:37
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Betragsfunktion siehe MySQL-Handbuch, Rest steht eigentlich schon da.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #7 (permalink)  
Alt 19-11-2009, 21:58
ecswebhosting
 Registrierter Benutzer
Links : Onlinestatus : ecswebhosting ist offline
Registriert seit: Nov 2009
Beiträge: 9
ecswebhosting befindet sich auf einem aufstrebenden Ast
Standard Sql

Hi Jon!
Und wennst einfach 2 SELECT Befehle machst und mit UNION dann zusammenschmeißt? 1* SELECT mit genauem Suchergebnis (brauchst nicht zu sortieren) und 1* SELECT mit Umfang < > sortiert.

Ich halte die Differenz nicht unbedingt für die Lösung, da ja auch ein kleineres Ergebnis durch die Sortierung oben stehen könnte. Wenn ich 90 Umfang habe, dann soll 90 oben stehen und nicht 87 oder 97.

Also einmal select ... where = 90 UNION select ... < > order by ...;

Viele Grüße,
Ingo
Mit Zitat antworten
  #8 (permalink)  
Alt 19-11-2009, 22:29
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von ecswebhosting Beitrag anzeigen
Ich halte die Differenz nicht unbedingt für die Lösung, da ja auch ein kleineres Ergebnis durch die Sortierung oben stehen könnte.
Wie meinen?
Zitat:
Wenn ich 90 Umfang habe, dann soll 90 oben stehen und nicht 87 oder 97.
Eben.

Bei dem Datensatz, der den Wert 90 enthält, ist die Differenz zum gesuchten Wert 0 - und deshalb wird der weiter nach oben sortiert als der mit dem Wert 87, wo die Differenz 3 beträgt, und der damit immer noch vor dem mit 97 kommt, bei dem die Differenz 7 ist ...
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #9 (permalink)  
Alt 19-11-2009, 23:18
ecswebhosting
 Registrierter Benutzer
Links : Onlinestatus : ecswebhosting ist offline
Registriert seit: Nov 2009
Beiträge: 9
ecswebhosting befindet sich auf einem aufstrebenden Ast
Standard

Hallo!

Stimmt, die Differenz 0 wäre ganz oben, das habe ich jetzt wiederum nicht bedacht.

Aber wäre es denn nicht sinnvoll, wenn anschließend die Größen durchgehend aufsteigend kämen? Bei Differenz wäre das doch nicht sichergestellt, da 91 und 89 dieselbe Differenz zu 90 hätten? Ich würde aus diesem Grund das nach wie vor mit UNION und 2 Abfragen machen - die 1. mit = 90 und die 2. Abfrage wie bereits beim ursprünglichen SQL-Statement sortieren lassen. So wäre 90 oben und danach käme 83...97.

Viele Grüße,
Ingo
ECS-Webhosting
Mit Zitat antworten
  #10 (permalink)  
Alt 19-11-2009, 23:51
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von ecswebhosting Beitrag anzeigen
Aber wäre es denn nicht sinnvoll, wenn anschließend die Größen durchgehend aufsteigend kämen?
Das käme dann auf die genaue Aufgabenstellung an ...
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #11 (permalink)  
Alt 20-11-2009, 00:15
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

Wahsaga hat schon Recht. 91 weicht genauso weit vom Wunsch ab wie 89. In sofern drückt die Differenz genau das aus, was gewünscht ist.

Und selbst wenn größere Umfänge bevorzugt werden sollen, dann würde ich eher ein zweites Argument (umfang > 90,0,1) mit einbringen, denn das (91,89,86,97) ist immernoch sinniger als die reine sortierung nach der größe (97,91,89, 86) wie in dem union-statement.

Nur um mal ein bisschen über den Tellerrand zu schauen und weil hier grad nichts los ist.
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #12 (permalink)  
Alt 20-11-2009, 13:44
xJonx
 Registrierter Benutzer
Links : Onlinestatus : xJonx ist offline
Registriert seit: Mar 2006
Ort: Bielefeld
Beiträge: 421
xJonx zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

da kämme es auch zu meiner hintergrundidee, zu der ich nicht direkt das gefunden habe, was das problem lösen würde.

gesprochen würde ich sowas suchen:

SELECT ... WHERE max differenz zu 90 = 7

wobei das dann im ergebnis die, die am nächsten dran sind, halt oben stehen sollten.
__________________
Design & Coding with a breeze of madness at xjonx
Mit Zitat antworten
  #13 (permalink)  
Alt 20-11-2009, 13:51
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von xJonx Beitrag anzeigen
gesprochen würde ich sowas suchen:

SELECT ... WHERE max differenz zu 90 = 7
Wenn du alle Datensätze haben willst, wo die Differenz maximal 7 beträgt - dann setze es als simple kleiner-gleich-Bedingung um.

Zitat:
wobei das dann im ergebnis die, die am nächsten dran sind, halt oben stehen sollten.
Wie das geht, das haben wir inzwischen so breit erklärt, dass es ein Grundschüler hinbekommen dürfte.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
Antwort

Lesezeichen


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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Vor und Zurück gehen in den Ergebnissen rossixx PHP Developer Forum 1 26-11-2008 16:13
Sortieren nach Rechen-Ergebnissen MM11 SQL / Datenbanken 5 14-03-2006 19:25
preg_match mit komischen Ergebnissen Gagi PHP Developer Forum 12 26-05-2005 16:28
Erst Limit, dann Order PHPbeginner SQL / Datenbanken 7 28-02-2005 15:30
Probleme mit Ergebnissen rlebek PHP Developer Forum 1 03-03-2002 15:46

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

ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script ansehen ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script

Mit unserer Lösungen können Sie nahezu jeden B2B / B2C Marktplatz betreiben den Sie sich vorstellen können. Ganz egal ob Sie einen Automarktplatz, Immobilenportal oder einfach einen Anzeigenmarkt betreiben möchten. Mit ebiz-trader können Sie Ihre Anforder

11.10.2018 Berni | Kategorie: PHP/ Anzeigenmarkt
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
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 14:38 Uhr.