SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Das Zend Framework

Das Zend Framework zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > MySQLi/PDO/(MySQL)
Hilfe Community Kalender Heutige Beiträge Suchen

MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 27.01.2011, 08:31:32
Leaderred Leaderred ist offline
Anfänger
 
Registriert seit: Nov 2010
Alter: 43
Beiträge: 40
Wie sortiert man Hausnummern?

Hallo zusammen,

hab eine kleines Problem.
In der DB werden Adressen erfasst, unter anderem Hausnummern. BIs jetzt hatte ich die Hausnummern als Int angelegt und konnte so auch die Sortierung über MySQL vornehmen. Also:
1
2
3
..
10
11
..
..

Bin jetzt nur auf ein Problem gestoßen, da es auch Hausnummern wie 10a, 15b, etc gibt
Wenn ich dazu den Feldtyp auf VARCHAR umstelle kann ich die Nummern zwar einpflegen, aber ich kann die Daten nicht mehr richtig sortieren. Sortierung sieht dann so aus:

1
11
12
13
..
19
2
20
21
..

Gibt es einen Feldtyp der die Sortierung von Zahlen und Buchstaben zulässt?
Oder gibs da eine andere Möglichkeit, die Ausgabe korrekt zu sortieren?

Hatte mir folgendes gedacht, aber da gibs auch hoffentlich eine einfachere Lösung für.

Man könnte die Datensätze wie folgt umbenennen, da ansonsten die vorangestellten Nullen automatisch entfernt werden

H001
H002
..

Ist nur blöd wenn man immer automatisch die Ein und Ausgaben anpassen muss, da dass H nicht angeigt werden soll.

Ich hoffe ihr könnt mir bei meinem Problem helfen.
Vielen Dank schonmal

Gruß
Mit Zitat antworten
  #2  
Alt 27.01.2011, 08:43:48
thomas_w thomas_w ist offline
Junior Member
 
Registriert seit: Aug 2010
Alter: 14
Beiträge: 395
AW: Wie sortiert man Hausnummern?

Zitat:
Zitat von Leaderred Beitrag anzeigen
Bin jetzt nur auf ein Problem gestoßen, da es auch Hausnummern wie 10a, 15b, etc gibt
Wenn ich dazu den Feldtyp auf VARCHAR umstelle kann ich die Nummern zwar einpflegen, aber ich kann die Daten nicht mehr richtig sortieren. Sortierung sieht dann so aus:

1
11
12
13
..
19
2
20
21
..
Die korrekte Lösung wäre die Hausnummer in zwei Spalten (INT und VARCHAR) zu speichern (was aber niemand macht, sondern die Hausnummer wird für gewöhnlich zusammen mit der Strasse gespeichert)

Code:
CREATE TABLE adresse (
  ...
  hausnummer INT,
  subhausnummer VARCHAR(5),
);

SELECT ...
...
ORDER BY hausnummer, subhausnummer;
Die Aufgabe ist es also, die Hausnummer (15a) vor dem Sortieren in die beiden Informationen 15 und a zu "normalisieren" und erst dann zu sortieren.

Grüße
Thomas
__________________
Die SQL-Backstube
Bietet Rezepte, Lösungen und ausführliche Beispiele rund um gesundes SQL und zufriedene Datenbanken.
Mit Zitat antworten
  #3  
Alt 27.01.2011, 11:15:32
Leaderred Leaderred ist offline
Anfänger
 
Registriert seit: Nov 2010
Alter: 43
Beiträge: 40
AW: Wie sortiert man Hausnummern?

Ok danke

Was meinst du mit "vor der Sortierung normalisieren"?
Ich sortier die Ausgabe mit dem ORDER BY Befehl im MySQL
Vorher kann ich ja nichts aufsplitten.

Oder meinst du, dass ich das erst auslese, in 2 Arrays trenne und anschließend danach sortiere?
Hatte gehofft dass es dafür eine einfachere Lösung gibt.

Oder kann ich das schon direkt beim auslesen bearbeiten/trennen damit ich dass direkt mit ORDER BY sortieren kann?


EDIT:
oder meinst du mit normalisieren die zusatzangabe in eine andere tabelle auszulagern?
Mit Zitat antworten
  #4  
Alt 27.01.2011, 11:47:02
thomas_w thomas_w ist offline
Junior Member
 
Registriert seit: Aug 2010
Alter: 14
Beiträge: 395
AW: Wie sortiert man Hausnummern?

Wie gesagt, die korrekte Methode ist die oben beschriebene Auftrennen (normalisieren) der Hausnummer in einen numerischen und einen alphanumerischen Teil.

Als Lösung bietet sich auch folgendes an:

Code:
CREATE TABLE adresse (
 id INT NOT NULL,
 name VARCHAR(50),
 strasse VARCHAR(50),
 hausnummer VARCHAR(10),
 PRIMARY KEY (id)
);

INSERT INTO adresse VALUES
( 1, 'Müller1', 'Mülleralee', '2'),
( 2, 'Müller19', 'Mülleralee', '19'),
( 3, 'Müller3b', 'Mülleralee', '3b'),
( 4, 'Müller3a', 'Mülleralee', '3a');

SELECT name, strasse, hausnummer
  FROM adresse
ORDER BY CAST(hausnummer AS UNSIGNED), hausnummer;
+----------+------------+------------+
| name     | strasse    | hausnummer |
+----------+------------+------------+
| Müller1  | Mülleralee | 2          |
| Müller3a | Mülleralee | 3a         |
| Müller3b | Mülleralee | 3b         |
| Müller19 | Mülleralee | 19         |
+----------+------------+------------+
4 rows in set, 2 warnings (0.00 sec)

mysql> show warnings;
+---------+------+-----------------------------------------+
| Level   | Code | Message                                 |
+---------+------+-----------------------------------------+
| Warning | 1292 | Truncated incorrect INTEGER value: '3b' |
| Warning | 1292 | Truncated incorrect INTEGER value: '3a' |
+---------+------+-----------------------------------------+
2 rows in set (0.00 sec)

mysql>
Teste mal, sollte aber stimmen...

Grüße
Thomas
__________________
Die SQL-Backstube
Bietet Rezepte, Lösungen und ausführliche Beispiele rund um gesundes SQL und zufriedene Datenbanken.
Mit Zitat antworten
  #5  
Alt 27.01.2011, 11:57:08
DokuLeseHemmung DokuLeseHemmung ist offline
SELFPHP Experte
 
Registriert seit: Jun 2008
Alter: 15
Beiträge: 2.269
AW: Wie sortiert man Hausnummern?

Rätselstraße 8 bis 16
Mit Zitat antworten
  #6  
Alt 27.01.2011, 12:03:23
thomas_w thomas_w ist offline
Junior Member
 
Registriert seit: Aug 2010
Alter: 14
Beiträge: 395
AW: Wie sortiert man Hausnummern?

Zitat:
Zitat von DokuLeseHemmung Beitrag anzeigen
Rätselstraße 8 bis 16
Wenn ich in meinem Beispiel die Daten wie folgt ergänze:
Code:
INSERT INTO adresse VALUES
( 5, 'MüllerR', 'Mülleralee', '8 bis 10');

SELECT name, strasse, hausnummer
  FROM adresse
ORDER BY CAST(hausnummer AS UNSIGNED), hausnummer;
+----------+------------+------------+
| name     | strasse    | hausnummer |
+----------+------------+------------+
| Müller1  | Mülleralee | 2          |
| Müller3a | Mülleralee | 3a         |
| Müller3b | Mülleralee | 3b         |
| MüllerR  | Mülleralee | 8 bis 10   |
| Müller19 | Mülleralee | 19         |
+----------+------------+------------+
5 rows in set, 3 warnings (0.00 sec)
Sieht gar nicht so schlecht aus..

Grüße
Thomas
__________________
Die SQL-Backstube
Bietet Rezepte, Lösungen und ausführliche Beispiele rund um gesundes SQL und zufriedene Datenbanken.
Mit Zitat antworten
  #7  
Alt 27.01.2011, 12:44:11
Leaderred Leaderred ist offline
Anfänger
 
Registriert seit: Nov 2010
Alter: 43
Beiträge: 40
AW: Wie sortiert man Hausnummern?

Super, funktioniert :)

Kann man die Warnungen ignorieren?
Und wie siehts beim Update dieser Felder aus? Hab ja theoretisch den Typ verändert. Kann ich die so reinschreiben oder muss ich den Typ wieder in ein Char umwandeln?
Mit Zitat antworten
  #8  
Alt 27.01.2011, 12:53:07
thomas_w thomas_w ist offline
Junior Member
 
Registriert seit: Aug 2010
Alter: 14
Beiträge: 395
AW: Wie sortiert man Hausnummern?

Zitat:
Zitat von Leaderred Beitrag anzeigen
Super, funktioniert :)

Kann man die Warnungen ignorieren?
Vermutlich kann man die Warnungen ignorieren. Das müßte ich mal recherchieren.

Zitat:
Zitat von Leaderred Beitrag anzeigen
Kann ich die so reinschreiben oder muss ich den Typ wieder in ein Char umwandeln?
Verstehe ich nicht. Bitte genauer erklären, was Du wissen willst.

Grüße
Thomas
__________________
Die SQL-Backstube
Bietet Rezepte, Lösungen und ausführliche Beispiele rund um gesundes SQL und zufriedene Datenbanken.
Mit Zitat antworten
  #9  
Alt 27.01.2011, 13:09:03
Leaderred Leaderred ist offline
Anfänger
 
Registriert seit: Nov 2010
Alter: 43
Beiträge: 40
AW: Wie sortiert man Hausnummern?

Ich geben die Daten aus und will die ggfs. verändern.

Das heißt, wenn ich ein Update mache, werden die Werte so wie ich sie vorher mit "CAST(hausnummer AS UNSIGNED)" bearbeitet habe in die DB geschrieben. Hatte vorhin mal bisschen zu Cast rausgesucht. Dadurch weise ich diesem Wert einen neuen DB Feld Typ zu, oder hab ich das falsch verstanden?

Dadurch das ich VARCHAR auf UNSIGNED setze ist es ja kein Textfeld mehr sondern numerisch?
Bin leider nicht so fit was die DB Formate angeht. Will das nur verstehen, damit ich zukünftig auch damit vernünftig arbeiten kann.

Vielen Dank für eure Mühe
Mit Zitat antworten
  #10  
Alt 27.01.2011, 13:18:08
thomas_w thomas_w ist offline
Junior Member
 
Registriert seit: Aug 2010
Alter: 14
Beiträge: 395
AW: Wie sortiert man Hausnummern?

Okay, Du kannst Deine Hausnummer weiterhin in einer VARCHAR Spalte speichern, daran ändert sich nichts. Meine SQL-Abfrage konvertiert nur für die MySQL interne Sortierung der Hausnummer mit CAST(). An der eigentlich Datenhaltung (INSERT, UPDATE ...) ändert sich gar nichts.

Grüße
Thomas
__________________
Die SQL-Backstube
Bietet Rezepte, Lösungen und ausführliche Beispiele rund um gesundes SQL und zufriedene Datenbanken.
Mit Zitat antworten
Antwort


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

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 aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Forum Neuste Beiträge sortiert anzeigen medown PHP für Fortgeschrittene und Experten 1 02.09.2009 14:26:49
Hausnummern vergleichen dermicha1987 MySQLi/PDO/(MySQL) 4 06.03.2009 12:56:14
Bilder auslesen und sortiert darstellen mit thumbs JoeBlack PHP Grundlagen 12 20.01.2008 16:23:29
3 zufällige Datensätze von ca. 1000, sortiert nach Spalte 2 ? bilbo_b MySQLi/PDO/(MySQL) 5 31.10.2006 23:49:15
Probleme mit sortierten Datensätzen vor- und zurückblättern (nicht nach id sortiert) Boa MySQLi/PDO/(MySQL) 6 03.06.2005 13:13:47


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:11:28 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt