Zum Inhalt springen

ACCESS: vertikale daten in horizontale daten konvertieren ;)


dummabua

Empfohlene Beiträge

Hi@all,

also ich versuch etz mal mein problem so zu beschreiben, damit ihr des versteht.

wir haben hier eine datenbank die zuerst auf einem alten system lief (ka welches).

in dieser datenbank geht es darum, offene stellen hier im betrieb für geistig oder körperlich behinderte Menschen auszuschreiben, d.h. es gibt bei allen arbeitsplätzen hier bestimmte, festgelegte bedingungen wie z.B langes arbeiten im stehen (also sprich Tätigkeiten die in der stelle verrichtet werden müssen). das sind insgesamt 20 verschiedene bedingungen (lacke, stehend arbeiten, nachtschicht etc...). nun wurde die datenbank, in der ca. momentan ~ 2000 datensätze vorhanden sind in access exportiert. so weit so gut. nun sollte ich die daten so aufbereiten damit man formulare und berichte ausdrucken bzw mittels des formulars daten ergänzen oder ändern kann. das ging ja ganz schnell. nun aber: die datenbanken wurden nicht in eine sondern in 2 datenbanken exportiert. in der einen sind 2000 datensätze die durch einen autowert eindeutig identifiziert werden, und in der anderen sind 20000 datensätze drinnen. ok warum ist das so. der hintergrund ist der, das die mit den 20000 datensätzen nur die fortlaufende nummer und die zutreffenden jeweiligen einschränkungen enthält.

ich mach mal ein beispiel

Tabelle1:

Spalte1------------------Spalte2-----------------------Spalte3----Spalte4-----Spalte5

(fortlaufende nr.)------(bezeichnung der stelle)---etc------------etc-----------etc

34-------------------------Türenmontage---------------xxx-----------xxx-----------xxx

so in der ersten Tabelle sieht man einmal die bezeichnung der spalten in klammern und ein beispiel (34)

so, diese stelle (34) hat auch solche anforderungen an den arbeiter

und die stehen in der tabelle2

Tabelle2:

Spalte1-------------------------------------Spalte2

(fortlaufende nummer wie oben)------zutreffende einschränkung

34--------------------------------------------01A

34--------------------------------------------02A

34--------------------------------------------07

34--------------------------------------------09

etc....

so mein problem is nun, das in der 2.ten Tabelle die daten untereinander stehen.

beispiel 34 hat sagen wir mal 4 bedingungen (siehe tabelle 2)

nun belegt dies aber 4 zeilen und ich will die daten in der form haben:

Spalte1-------------------Spalte2------------Spalte3-----------------Spalte4------------etc.....

fortlaufende nummer---01A-----------------02A----------------------07------------------09

also das die einschränkunken ned untereinander sondern nebeneinander stehen...

wie kriege ich die daten aus tabelle 2 am besten in die von mir gewünschte form???

ich weiss des is alles verwirrend, wenn etwas noch unklar is, fragt einfach

danke für jeden vorschlag

cu db:D

Link zu diesem Kommentar
Auf anderen Seiten teilen

..also..ich hätte da schon eine Idee für einen Möglichkeit, das alles mit einem Select raus zu holen - dafür bin ich auf Arbeit berüchtigt...

Also, ich bau das mal hier als Beispiel - ich hoffe, es wird dann klar. :floet:

Der Select besteht aus einem Select auf eine Untermenge, welche durch einen Union erstellt wird und dann per Group by zusammen gefasst.

Das Ganze geht nur, wenn Du eine fixe Anzahl von Feldern hast, die Du "in die Horizontale" kriegen willst. Sieht verworren aus, will ich nicht leugnen, aber es hilft... falls es unter Access funzt, was ich nicht garantieren kann.

SELECT nummer, MAX(bed1) AS bed1, MAX(bed2) AS bed2, ... (usw)...

FROM

(

SELECT nummer, 1 AS bed1, 0 AS bed2, ... usw FROM tabelle WHERE feld='bed1'

UNION

SELECT nummer, 0 AS bed1, 1 AS bed2, ... usw FROM tabelle WHERE feld='bed2'

UNION...

)

GROUP BY nummer

Der Innere Teil, der UNION, erstellt die Untermenge, auf die selektiert wird.

Damit bekommst Du als Ergebnis etwas zurück, was (sortiert) ungefähr wir folgt aussehen dürfte:

nummer|bed1|bed2|bed3

-------------------------------------------------------------------------------------------------

34 | 1 | 0 | 0

34 | 0 | 0 | 1

38 | 0 | 0 | 1

43 | 0 | 1 | 0

43 | 0 | 0 | 1

...

...und so weiter

Wenn Du darauf dann den Äusseren Teil anwendest, müsste das Ergebnis dank Group by wie folgt lauten:

nummer|bed1|bed2|bed3

-------------------------------------------------------------------------------------------------

34 | 1 | 0 | 1

38 | 0 | 0 | 1

43 | 0 | 1 | 1

...

:mod:

(Sorry, ich bekomme es hier nicht besser formatiert. An die Board-Admins: wie wäre es denn mal mit "table"-tags?)

Ich hoffe, das ist klar genug, wenn nicht... fragen. ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von Jaraz



|nummer|bed1|bed2|bed3|

-----------------------

| 34   | 1  | 0  | 0  |

| 34   | 0  | 0  | 1  |

| 38   | 0  | 0  | 1  |

| 43   | 0  | 1  | 0  |

| 43   | 0  | 0  | 1  |

Das ganze in nem Text Editor schreiben und in code Tags packen.

Gruß Jaraz

..bin ich zublöd für... :D ...tja, wer lesen kann, ist klar im Vorteil... :mod:

Mea Culpa!

Gruss,

der Onkel

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...