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, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 14-09-2009, 14:20
mr_apollon
 Registrierter Benutzer
Links : Onlinestatus : mr_apollon ist offline
Registriert seit: May 2009
Beiträge: 38
mr_apollon befindet sich auf einem aufstrebenden Ast
Standard Position mit MySql finden (schwierig)

Hallo Leute,

ich brauche Eure Hilfe bei einer PHP-Anwendung. Ich habe in einer Text-Spalte Bezeichnungen (Zahlen und Buchstaben). Diese werden mit MySql geordnet ausgegeben. (Alphabetisch und Zahlen nach Größe geordnet)

$queryStr = "SELECT * FROM tabelle ORDER BY name+0,REPLACE(name,name+0,'')";

Soweit so gut, klappt wunderbar.

Jetzt möchte ich die Position eines einzelnen Datensatzes entsprechend der Sortierung finden.

$queryStr = "SELECT COUNT(*) FROM tabelle WHERE name < '".$document."' ORDER BY name+0, REPLACE(name,name+0,'')";

Klappt wunderbar bei allen Namen die mit Buchstabe anfangen. Bei Zahlen wird von 0 hochgezählt. Nach der Ordnung müssten alle Namen mit Zahlen von der Position erst nach allen Namen mit Buchstaben kommen.

name < '".$document."' getauscht mit name+0 < '".$document."'

jetzt werden die Namen mit Zahlen an der richtigen Stelle angezeigt aber bei Namen mit Buchstaben wird immer 0 ausgegeben.

Ich hoffe mein Problem ist etwas verständlich. Die Frage, wie bekomme ich jetzt die richtige Position entsprechend meiner Ordnung heraus, egal ob es sich um Zahlen oder Buchstaben handelt.

Zerbreche mir schon den ganzen Tag den Kopf. Hoffe jemand hat den zündenden Gedanken
Mit Zitat antworten
  #2 (permalink)  
Alt 14-09-2009, 14:59
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Hallo,

da where immer vor order by angewendet wird, funktioniert das nicht so wie du denkst. Den < Operator interessiert deine selbst gewählte Reihenfolge nicht.

Die Variante mit replace ist übrigens schlecht, da bei '123abc1234' nur noch 'abc4' übrig bleibt und sich damit keine konsistente Reihenfolge ergibt. Der Einfachheit halber bleib ich aber erstmal dabei, um dir das Prinzip zu verdeutlichen.

Du brauchst zuerst für die beiden Sortierkriterien je eine Zusatzspalte, z. B.
Code:
select
	name,
	name+0 as sort_a,
	replace(name, name+0, '') as sort_b
from tabelle
Dann musst du in PHP deinen Suchausdruck ebenfalls zerhacken:
PHP-Code:
$docA $document 0;
$docB str_replace($docA''$document); 
Da where bei dynamischen Spalten nicht funktioniert, musst du having nehmen:
Code:
select
	name,
	name+0 as sort_a,
	replace(name, name+0, '') as sort_b
from tabelle
having sort_a <= $docA and sort_b < $docB
Dafür funktioniert count(*) aber nicht mehr, also musst du
Code:
select SQL_CALC_FOUND_ROWS
	name,
	name+0 as sort_a,
	replace(name, name+0, '') as sort_b
from tabelle
having sort_a <= $docA and sort_b < $docB
und danach noch ein
Code:
select found_rows();
absetzen, um zu deinem Ergebnis zu kommen.

Gruß,

Amica
Mit Zitat antworten
  #3 (permalink)  
Alt 14-09-2009, 15:09
Benutzerbild von Berni Berni
  OWNER
Links : Onlinestatus : Berni ist offline
Registriert seit: Jan 2001
Ort: Frankfurt / Egelsbach
Beiträge: 6.306
Blog-Einträge: 6
Berni befindet sich auf einem aufstrebenden Ast
Standard

wow!

suchst du einen Job?
__________________

php-Entwicklung | ebiz-consult.de
PHP-Webhosting für PHP Entwickler | ebiz-webhosting.de
die PHP Marktplatz-Software | ebiz-trader.de
Mit Zitat antworten
  #4 (permalink)  
Alt 14-09-2009, 15:10
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von Berni Beitrag anzeigen
wow!

suchst du einen Job?
Meinst du mr_apollon oder mich?
Mit Zitat antworten
  #5 (permalink)  
Alt 14-09-2009, 16:42
Benutzerbild von Berni Berni
  OWNER
Links : Onlinestatus : Berni ist offline
Registriert seit: Jan 2001
Ort: Frankfurt / Egelsbach
Beiträge: 6.306
Blog-Einträge: 6
Berni befindet sich auf einem aufstrebenden Ast
Standard

dich
__________________

php-Entwicklung | ebiz-consult.de
PHP-Webhosting für PHP Entwickler | ebiz-webhosting.de
die PHP Marktplatz-Software | ebiz-trader.de
Mit Zitat antworten
  #6 (permalink)  
Alt 14-09-2009, 16:54
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von Berni Beitrag anzeigen
wow!

suchst du einen Job?
OffTopic:

Einen Job suche ich nicht, ich bin selbstständig, aber ab November bin ich voraussichtlich für Projekte verfügbar.

Mit Zitat antworten
  #7 (permalink)  
Alt 14-09-2009, 17:18
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

@AmicaNoctis
@berni

macht das bitte per PM oder sonst wie aus.

Danke
Peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
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
Mysql Query, Schleife - bei Position X was machen friedhelm-d PHP Developer Forum 3 21-06-2007 09:26
*Durchdreh* bin ich zu doof oder php zu schwierig christian000 Off-Topic Diskussionen 6 15-01-2007 21:51
[MySQL 4.1] Suchbegriffe finden Dulla_Po SQL / Datenbanken 26 28-12-2006 02:01
Jetzt könnte es schwierig werden.. römer PHP Developer Forum 2 21-07-2003 23:09
ist das denn so schwierig?- 3 werte pro zeile lookom SQL / Datenbanken 5 20-03-2002 23:51

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 04:42 Uhr.