![]() |
Datenbank: access • Zugriff über: ado
mehrere Datensätze in einer Zeile?
Hi,
folgendes Problem: Folgendes Szenario: Tabelle: Bestellung Bestellnr Artikelnr 1 580 1 581 1 582 1 583 2 585 2 586 So, jetzt möcht ich sozusagen eine Abfrage machen, um in der 1. Spalte den Kundenname zu haben und in den restlichen Spalten rechts NEBENEINANDER die artikel. Es gibt sozusagen 3 Tabellen: Kunden, Bestellungen (mit Infos wie lieferbedingungen usw., uninteressant), Artikel So jetzt mach ich sozusagen einen query mit Joins über alle 3 Tabellen. Ich bekomm das alles schon so hin dass ich Kundenname und die Artikelnamen habe. Problem ist nur, dass die Datensätze alle UNTEREINANDER angezeigt werden. Gibt es ne möglichkeit alles in einer Zeile anzuzeigen? Ich hoffe es ist einigermaßen verständlich, ist nämlich echt komplex. Gruß |
Re: mehrere Datensätze in einer Zeile?
Z.B. mit Subselects. Nennt man auch Pivot
|
Re: mehrere Datensätze in einer Zeile?
aber mit nem subselect kann ich ja nur 1 datensatz zurückgeben oder?
was ist wenn ich eine schöne tabelle machen möchte, wo links alle kunden namen und rechts die bestellten artikel aufgelistet sind ? |
Re: mehrere Datensätze in einer Zeile?
Natürlich in Verbindung mit entsprechender Limitierung
Kunde 1.Artikel, 2. Artikel, ... |
Re: mehrere Datensätze in einer Zeile?
Datenbank->Neu->PivotTable-Assistent
|
Re: mehrere Datensätze in einer Zeile?
datenbank-neu???
Das ist ne access datenbank. und wie meinst du das mit limitierungen??? |
Re: mehrere Datensätze in einer Zeile?
Mit Limitierung meine ich den 1ersten, den ersten nach Überspringen des 1. (alos den 2.) u.s.w.
Kenne mich in Access nicht aus bei FB wäre es
SQL-Code:
,
first 1
SQL-Code:
, ...
first 1 skip 1
bei MySQL
SQL-Code:
,
limit 1
SQL-Code:
, ...
limit 1,1
bei Interbase/FB
SQL-Code:
,
rows 1
SQL-Code:
, ...
rows 1,1
|
Re: mehrere Datensätze in einer Zeile?
glaub irgendwie versteh ich das mit dem limit nicht. was bringt mir der wenn er eins weiter springt?
ausserdem geht der befehl in acces nicht :( ist das so etwas wie TOP 10 oder sowas? noch jemand n vorschlag bzw. ein beispiel? |
Re: mehrere Datensätze in einer Zeile?
Neuer Versuch...
Abfrage erstellen... Datenbank->Abfragen->Entwurfsansicht Person.Name, Person-Produkt.ID, Produkt.Name Kreuztabelle erstellen... Datenbank->Abfragen->Kreuzabfrage-Assistent - obige Abfrage auswählen, weiter - person.name hinzufügen, weiter - produkt.name hinzufügen, weiter - produkt_id markieren, Anzahl auswählen, weiter - Fertig stellen |
Re: mehrere Datensätze in einer Zeile?
Zitat:
Tabelle: Bestellung Bestellnr Artikelnr 1 580 1 581 1 582 1 583 2 585 2 586
SQL-Code:
liefert
select
distinct t1.Bestellnr, (select Artikelnummer from Bestellung where bestellnr = t1.Bestellnr limit 1), (select Artikelnummer from Bestellung where bestellnr = t1.Bestellnr limit 1,1) ... from Bestellung t1; 1 580 581 ... 2 585 586 ... |
Re: mehrere Datensätze in einer Zeile?
Limit kennt Jet-Sql nicht, da muss man es etwas umständlich mit Top simulieren. Die Sql-Anweisung könnte auch ziemlich lang werden, bei vielen Bestellungen, und wenn man wenn man weniger als die maximale Anzahl verwendet wird das Ergebis unvollständig.
In MySql wäre es mit GROUP_CONCAT äußerst einfach, leider scheint Jet so etwas nicht zu kennen. ![]() |
Re: mehrere Datensätze in einer Zeile?
Wozu brauchst du denn die Felder auf diese Weise angeordnet?
Willst du Drucken, Daten exportieren oder dem Benutzer im Grid anzeigen? (einfach mal querdenken!) Man kann das Problem auch mit Delphi (ohne SQL) lösen. Die Abfrage auf die Bestellungen bekommt ein berechnetes Feld hinzu. Im Event OnCalcFields benötigt man dann eine 2. Abfrage auf die Artikel. (Master-Detail-Verknüpfung) Mit einer Schleife über die Artikeldaten verkettet man die Artikelnummern zu einen String (Nummer durch Komma getrennt) und weist das dem berechneten Feld zu. Das ist natürlich langsamer als per SQL; aber das Problem lässt sich mit der der Jet-Engine wahrscheinlich nicht lösen. |
Re: mehrere Datensätze in einer Zeile?
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
|
Re: mehrere Datensätze in einer Zeile?
Hi,
jetzt steh ich vor einem ähnlichen problem, allerdings nicht mehr in access, sondern auf einem sql 2005 server. kennt von euch jemand auch hierfür eine funktion? Group_concat etc. laufen nur auf mysql was ich darüber gefunden habe aber für TSQL habe ich noch nichts gefunden :( wäre dankbar für eure hilfe |
Re: mehrere Datensätze in einer Zeile?
|
Re: mehrere Datensätze in einer Zeile?
ja, aber was ich irgendwie rausgelesen habe, dass es eher nicht für mein vorhaben geeignet ist.
mein ziel ist, aus diesen daten
Delphi-Quellcode:
folgendes ergebnis zu bekommen
Bestellnr Artikelnr
1 580 1 581 1 582 1 583 2 585 2 586 1 580 581 582 583 2 585 586 sozusagen 2 zeilen zu erhalten mit DYNAMISCHER spaltenanzahl, je nachdem wieviele daten vorhanden sind?!?! |
Re: mehrere Datensätze in einer Zeile?
Dann musst du die Abfrage manuell zusammenfiemeln.
|
Re: mehrere Datensätze in einer Zeile?
tja das wenn ich wüsste wie ich das anstellen soll ;)
dann hätte ich ja das problem nicht, hab schon alles versucht, group concat etc. gibts ja für mysql,läuft aber nich auf tsql und für tsql habe ich bis jetzt leider echt noch nichts gescheites gefunden :((( |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz