[...]
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