SQL-Abfrage
shtml08
- datenbank
0 Vinzenz Mai0 Murphy0 shtml
Hallo User!
Ich bekomme eine SQL-Abfrage einfach nicht hin. (Nutze den Advantage Data Architect, falls dies eine nützliche Info sein sollte)
Ich habe verschiedene Artikel-EAN mit 13 Stellen und möchte nun die Hersteller herausbekommen. Damit ich nicht jede EAN einzeln nach Herstellern durchsuchen möchte ist eine Abfrage nötig die mir alle EAN gruppiert, die an 3.-7. Stelle gleich sind- siehe Schritt 1(diese 5 Stellen repräsentieren jeweils einen bestimmten Hersteller). Sinn des ganzen ist es, danach eine Spalte hinfügen zu können, die mir den jeweiligen Hersteller in die Zeile einfügt in der die EAN stehen mit der zugehörigen 5-stelligen Nummer(siehe Schritt 2).
Ich versuche nun vergeblich Abfragen für Schritt 1 und 2 hinzubekommen.. Kann mir dabei jmd. behilflich sein??? Ich wäre sehr dankbar, denn es ist enorm wichtig. MfG Daniel
In unterem Beispiel ist die Tabelle natürlich nur ein SEHR kleiner Ausschnitt.
EAN
9789054674757
9793861277162
9789054674658
9793861277179
9937425006151
9789054675426
9937515002865
1.Schritt
EAN
9789054674757
9789054674658
9789054675426
9793861277162
9793861277179
9937515002865
9937425006151
2.Schritt
EAN HERSTELLER
9789054674757 X
9789054674658 X
9789054675426 X
9793861277162 V
9793861277179 V
9937515002865 C
9937425006151 N
Hallo,
Ich bekomme eine SQL-Abfrage einfach nicht hin. (Nutze den Advantage Data Architect, falls dies eine nützliche Info sein sollte)
vermutlich nicht. Es hört sich nicht nach einem Datenbankmanagementsystem (DBMS) wie z.B. Oracle, MS SQL-Server, DB2, Informix, PostgreSQL, MySQL, SQLite, Jet-Engine (MS Access), FileMaker, FoxPro, dBase, ... an.
Ich habe verschiedene Artikel-EAN mit 13 Stellen und möchte nun die Hersteller herausbekommen. Damit ich nicht jede EAN einzeln nach Herstellern durchsuchen möchte ist eine Abfrage nötig die mir alle EAN gruppiert, die an 3.-7. Stelle gleich sind-
Dein DBMS verfügt ganz bestimmt über Zeichenkettenfunktion, die Dir helfen dieses Vorhaben ganz einfach umzusetzen:
EAN HERSTELLER
9789054674757 X
9789054674658 X
9789054675426 X
9793861277162 V
9793861277179 V
9937515002865 C
9937425006151 N
T-SQL, der SQL-Dialekt von MS SQL-Server, kennt z.B. die Funktion SUBSTRING(), MySQL übrigens auch. Die Chancen stehen gut, dass Dein DBMS ebenfalls etwas in dieser Richtung bietet.
Freundliche Grüße
Vinzenz
[...]
Ich habe verschiedene Artikel-EAN mit 13 Stellen und möchte nun die Hersteller herausbekommen. Damit ich nicht jede EAN einzeln nach Herstellern durchsuchen möchte ist eine Abfrage nötig die mir alle EAN gruppiert, die an 3.-7. Stelle gleich sind- siehe Schritt 1(diese 5 Stellen repräsentieren jeweils einen bestimmten Hersteller). Sinn des ganzen ist es, danach eine Spalte hinfügen zu können, die mir den jeweiligen Hersteller in die Zeile einfügt in der die EAN stehen mit der zugehörigen 5-stelligen Nummer(siehe Schritt 2).
[...]
Hallo,
vielleicht hilft Dir ein Beispiel weiter. Ich benutze dafür SQLite3, aber mit anderen DBMS wird es ähnlich gehen. Zunächst mal Deine Beispieldaten einlesen:
% sqlite3 -header -column ean.db
SQLite version 3.5.7
Enter ".help" for instructions
sqlite> CREATE TABLE Articles(ean);
sqlite> .import /dev/stdin Articles
[...]
Dann eine temporäre Tabelle für die Hersteller anlegen:
sqlite> CREATE TEMPORARY TABLE Manufacturers
...> AS SELECT DISTINCT substr(ean, 3, 4) AS id,
...> NULL AS name
...> FROM Articles;
Nachschauen, was da nun drin gelandet ist:
sqlite> SELECT * FROM Manufacturers;
id name
---------- ----------
3742
3751
8905
9386
Namen eintragen:
sqlite> UPDATE Manufacturers SET name = 'Alpha' WHERE id = '3742';
sqlite> UPDATE Manufacturers SET name = 'Bravo' WHERE id = '3751';
[...]
Eine Spalte für die Hersteller in der Artikeltabelle anlegen und mit Werten füllen:
sqlite> ALTER TABLE Articles ADD COLUMN manufacturer;
sqlite> UPDATE Articles
...> SET manufacturer = (
...> SELECT name
...> FROM Manufacturers
...> WHERE id = substr(ean, 3, 4)
...> );
Und schließlich das Resultat begutachten:
sqlite> SELECT * FROM Articles;
ean manufacturer
------------- ------------
9789054674757 Charlie
9793861277162 Delta
9789054674658 Charlie
9793861277179 Delta
9937425006151 Alpha
9789054675426 Charlie
9937515002865 Bravo
Ich hoffe, das hilft Dir weiter.
cu,
Murphy
Danke euch beiden.. Substring hat mir dann weitergeholfen.
@Murphy
Leider ist es mit meinen Nummern nicht ganz so einfach wie ich gedacht habe. Denn meine Nummern bestehen,wie geschrieben aus 13 Stellen und da steckt ein sehr kompexes System hinter.
MfG
shtml