 |
Softpicks.Net Deutsch Software Forum Deutsch
|
| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
| Autor |
Nachricht |
Anmeldedatum: 01.01.1970 Beiträge: 312655
|
Verfasst am: So Dez 17, 2006 11:50 pm Titel: Abfrage |
|
|
Hallo, Astrid,
Astrid Rabens:
> Ich danke dir/euch für die hilfe
:-) gerne
> und wünsche eine Gute Nacht.
- Dir auch!
Gruss - Mark
.
|
|
| Nach oben |
|
 |
Karl Donaubauer
Anmeldedatum: 01.01.1970 Beiträge: 4616
|
Verfasst am: Mi Mai 09, 2007 11:32 am Titel: Abfrage |
|
|
Mario Krsnic wrote:
> ich füge die Sätze aus einer Tabelle in eine andere. Dabei möchte ich
> nicht, dass die Sätze angefügt werden, wenn sie schon
> in der ersten Tabelle vorhanden sind. Dafür prüfe ich lfd_nr
> (KlientenNr) des Berichts, Datum (enthält Datum und Zeit) und
> Autorenname und verwende diese Abfrage.
>
> INSERT INTO berichte
> SELECT *
> FROM berichte2
> WHERE not berichte2.lfd_nr in
> (select berichte2.lfd_nr from berichte inner join berichte2
> on berichte.lfd_nr=berichte2.lfd_nr where
> berichte.datum=berichte2.datum and berichte.autor=berichte2.autor)
>
> Die Abfrage funktioniert gut, nur in der Tabelle mit 70000 Sätze ist
> die relativ langsam. Könnte mir jemand eine schnellere Lösung
> vorschlagen? ...
Test mal das:
INSERT INTO berichte
SELECT berichte2.*
FROM berichte2 LEFT JOIN berichte ON
berichte2.lfd_nr = berichte.lfd_nr AND
berichte2.datum = berichte.datum AND
berichte2.autor = berichte.autor
WHERE berichte.lfd_nr Is Null
--
HTH
Karl
********* Ich beantworte keine Access-Fragen per Email. *********
Access-FAQ: http://www.donkarl.com
.
|
|
| Nach oben |
|
 |
Anmeldedatum: 01.01.1970 Beiträge: 312655
|
Verfasst am: Mi Mai 09, 2007 11:35 am Titel: Abfrage |
|
|
Hallo,
Mario Krsnic wrote:
> ich füge die Sätze aus einer Tabelle in eine andere. Dabei möchte ich nicht,
> dass die Sätze angefügt werden, wenn sie schon
> in der ersten Tabelle vorhanden sind. Dafür prüfe ich lfd_nr (KlientenNr)
> des Berichts, Datum (enthält Datum und Zeit) und Autorenname und verwende
> diese Abfrage.
>
> INSERT INTO berichte
> SELECT *
> FROM berichte2
> WHERE not berichte2.lfd_nr in
> (select berichte2.lfd_nr from berichte inner join berichte2
> on berichte.lfd_nr=berichte2.lfd_nr where berichte.datum=berichte2.datum
> and berichte.autor=berichte2.autor)
>
> Die Abfrage funktioniert gut, nur in der Tabelle mit 70000 Sätze ist die
> relativ langsam. Könnte mir jemand eine schnellere Lösung vorschlagen?
Was verstehst du unter relativ langsam?
Probier mal so:
INSERT INTO berichte
SELECT *
FROM berichte2 AS T1
WHERE NOT EXISTS
(SELECT T2.lfd_nr FROM berichte AS T2
WHERE T2.lfd_nr = T1.lfd_nr
AND T2.Datum = T1.Datum
AND T2.Autor = T1.Autor )
Die Felder lfd_nr, datum und autor muessen in beiden Tabellen indiziert
sein.
Gruss - Peter
--
Ich beantworte keine Fragen per Email.
Mitglied im http://www.dbdev.org
FAQ: http://www.donkarl.com
.
|
|
| Nach oben |
|
 |
Mario Krsnic
Anmeldedatum: 01.01.1970 Beiträge: 38
|
Verfasst am: Mi Mai 09, 2007 1:56 pm Titel: Abfrage |
|
|
Hallo Karl!
> Test mal das:
>
> INSERT INTO berichte
> SELECT berichte2.*
> FROM berichte2 LEFT JOIN berichte ON
> berichte2.lfd_nr = berichte.lfd_nr AND
> berichte2.datum = berichte.datum AND
> berichte2.autor = berichte.autor
> WHERE berichte.lfd_nr Is Null
Vielen Dank! Das ist super schnell und super gut!
Gruss
Mario
.
|
|
| Nach oben |
|
 |
Michael Zimmermann
Anmeldedatum: 01.01.1970 Beiträge: 2944
|
Verfasst am: Di Dez 04, 2007 1:28 am Titel: Abfrage |
|
|
Hallo!
Hermann:
> kann man in einer Abfrage die Datensätze durchnummerieren?
Ja.
> Eine Abfrage liefert das folgende Ergebnis
> A
> A
> B
> B
> B
>
> Ich benötige jedoch ein Ergebnis welches so aussieht
>
> A 1 ...
> A 2 ...
> B 1 ...
> B 2 ...
> B 3 ...
>
> Die zusammenghörenden Datensätze einer Gruppe sollen
> automatisch durchnummeriert werden.
>
> Geht das ?
Jain. Wenn man genau Deinem Beispiel folgt, ist Dein
Begehren völlig unsinnig: Da A und A ununterscheidbar
sind, kann man sie auch nicht sinnvoll numerieren.
Falls etwas in der Art dahintersteckt, daß sich aus einem
eindeutigen Feld, das eine Sortierung erlaubt, aber nicht
angezeigt wird, eine Reihenfolge ergibt, dann geht das
durchaus. Du kannst Dir das folgende generische Beispiel
anpassen:
SELECT
H.idFeld,
H.fiGruppierfeld,
H.Sortierfeld,
H.Wert,
(
SELECT
Count(*)
FROM
Tabelle As S
WHERE
S.fiGruppierfeld = H.fiGruppierfeld
AND
S.Sortierfeld<=H.Sortierfeld
) AS LfdNr
FROM
Tabelle AS H
ORDER BY
H.fiGruppierfeld,
H.Sortierfeld
Gruß aus Mainz
Michael
.
|
|
| Nach oben |
|
 |
Michael Zimmermann
Anmeldedatum: 01.01.1970 Beiträge: 2944
|
Verfasst am: Mo Dez 10, 2007 12:29 pm Titel: Abfrage |
|
|
Hallo!
Hermann:
> Danke,
> eh klar, wie richtig vermutet gibts da im Hintergrund
> noch mehr Daten.
Es ist im Eigeninteresse des Fragenden erheblich sinnvoller,
genau das Problem zu schildern, das er hat, und es nicht
durch irgendein vermeintlich gleichstrukturiertes Problem
zu ersetzen.
Wenn ich beim Metzger wissen will, was das Rinderfilet
kostet, frage ich "Was kostet das Rinderfilet" und nicht
"Was würden die Koteletts kosten, wenn sie aus dem
Filetstück geschnitten wären und Schweine Hörner hätten
und Milch gäben?"
Gruß aus Mainz
Michael
.
|
|
| Nach oben |
|
 |
Michael Zimmermann
Anmeldedatum: 01.01.1970 Beiträge: 2944
|
Verfasst am: Di Dez 11, 2007 12:47 am Titel: Abfrage |
|
|
Hallo!
Hermann:
> Konkret sieht die Sache so aus:
> Es werden Rechenbeispiele in einer Datenbank verwaltet.
> Jedes Beispiel enthält u.a. ein oder mehrere Deskriptoren
> und noch Zusatzinformationen wie z.B. Lösungsdauer etc..
> Die Deskriptoren werden in einer Tabelle verwaltet und
> sie sind eindeutig, sie können aber mehrmals in
> verschiedenen Beispielen vorkommen.
>
> z.B. Beispiel 1 enthält Deskriptor 1, 2 und 5,
> Lösungsdauer L1 Beispiel 2 enthält Deskriptor 1 und
> 4, Lösungsdauer L2 u.s.w.
> Frage ich nun die Metadaten eines Beispiels ab, also
> welches Beispiel, welche Deskriptoren enthält, ergibt
> sich folgendes Ergebnis (Beispiel = B, Deskriptor = D, L
> = Lösungsdauer)
> B1 D1 L1
> B1 D2 L1
> B1 D5 L1
> B2 D1 L2
> B2 D4 L2
>
> Das Problem besteht nun darin, die Informationen für ein
> Beispiel mit Serienbrief in einem Worddokument
> darzustellen. Problem deshalb, weil die Anzahl der
> Deskriptoren je Beispiel unterschiedlich ist (1 -10) und
> ich ein und dasselbe Serienhauptdokument für alle
> Beispiele verwenden möchte. Hier soll jedoch der Name des
> Beispiels nur 1x dargestellt werden, (ebenso wie andere
> Informationen die vom Prinzip her gleich sind wie z.B.
> Lösungsdauer, Hilfsmittel ...), jedoch alle Deskriptoren.
> Im Textfluss stellt sich das Ganze vereinfacht so dar:
> "Beispiel B1 enthält die Deskriptoren D1, D2, D5 und hat
> eine Lösungsdauer von L1". Bezogen auf die Abfrage kommt
> B1 aus dem ersten Datensatz, L1 jedoch aus dem 3. Nach D1
> und D2 steht im Dokument jeweils "Nächster Datensatz",
> nicht jedoch nach D5 da sonst L1 nicht angezeigt würde.
Könnte man das so abstrahieren, daß Du eine Art 1:n-Problem
beim Seriendruck hast?
Sprich, Du möchtest je Hauptdatensatz einen SD-Abschnitt,
aber innerhalb dessen eine beliebige und innerhalb eines
SD auch variable Anzahl an Detaildatensätzen unterbringen?
Dein Problem wäre dann, daß Word bei jedem DS eine neue
Seite beginnt, statt Details derselben Mutter auf einer
Seite zusammenzuhalten?
Falls das so ist, brauchst Du keine DS-Nummern. Das geht
einfacher.
> Um zum Vergleich mit dem Metzger zu kommen, stellt sich
> die Sache höchstens so dar, dass ich die Aufgabe habe
> eine dicke schwarze Kuh durch ein Tor zu bringen, ich
> jedoch die Frage gestellt habe, wie ich eine "allgemeine"
> Kuh durch ein Tor bringe
>
> Gruß aus Österreich
Ich dachte, in Östereich hätte es eher Grauvieh und
Braunvieh? Allerdings beantwortet die generische Lösung
ganz allgemein die Frage, wie man etwas durch etwas bringt.
;-)
Gruß aus Mainz
Michael
.
|
|
| Nach oben |
|
 |
Michael Zimmermann
Anmeldedatum: 01.01.1970 Beiträge: 2944
|
Verfasst am: Di Dez 11, 2007 2:32 pm Titel: Abfrage |
|
|
Hallo!
Hermann:
> Du hast recht, das 1:n Problem ist tatsächlich mein
> eigentliches Problem.
Siehst Du, Du hättest gleich fragen sollen, wie man eine
dicke, schwarze Kuh durch ein Tor bringt. ;-)
> Wobei ich nicht nach jedem
> Datensatz eine neue Seite eröffne, sondern mehrere
> Datensätze je Seite. Entsprechend der Anzahl der
> Deskriptoren. Erst dann wird eine neue Seite begonnen.
Das klingt, als bräuchtest Du eigentlich keinen Seriendruck,
sondern Du benutzt den nur, um Deine Daten nach Word zu
bekommen?
> Das Problem ist, dass ich beim Serienbrief nicht erkennen
> kann, wieviele Datensätze auf einer Seite darzustellen
> sind.
>
> Wenn du eine einfachere Lösung für das Problem hast, wäre
> ich dir sehr dankbar.
> Ich fürchte nämlich, dass meine ursprüngliche Idee,
> Vergleich der Rekordnummer mit der maximalen Anzahl
> ohnehin nicht klappt.
Joo.
Lies mal das hier:
www.donkarl.com/AEK/AEKDownloads/AEK9_Automation.zip
Auf das angesprochene Problem wird ab Seite 28 eingegangen.
Wenn Du keine Seitenwechsel bei Hauptdatensätzen brauchst,
verwende
wdMerge.MainDocumentType = wdFormLetters
statt
wdMerge.MainDocumentType = wdCatalog
Allerdings soltest Du die Ausgabe dann auch ohne SD mit
simpler Automation machen können.
In der beigefügten DB findest Du auch fertigen Code, den
Du Dir anpassen kannst.
Gruß aus Mainz
Michael
.
|
|
| Nach oben |
|
 |
Michael Zimmermann
Anmeldedatum: 01.01.1970 Beiträge: 2944
|
Verfasst am: Di Dez 11, 2007 2:35 pm Titel: Abfrage |
|
|
Hallo!
Michael Zimmermann:
> Wenn Du keine Seitenwechsel bei Hauptdatensätzen brauchst,
> verwende
> wdMerge.MainDocumentType = wdFormLetters
> statt
> wdMerge.MainDocumentType = wdCatalog
Andersrum:
Wenn Du keine Seitenwechsel bei Hauptdatensätzen brauchst,
verwende
wdMerge.MainDocumentType = wdCatalog
statt
wdMerge.MainDocumentType = wdFormLetters
Gruß aus Mainz
Michael
.
|
|
| Nach oben |
|
 |
Anmeldedatum: 01.01.1970 Beiträge: 312655
|
Verfasst am: Mo Apr 14, 2008 2:25 pm Titel: Abfrage |
|
|
Hallo Christian,
>
> Gibt es eine andere M=F6glichkeit, dass ich mehr wie neun Eintr=E4ge
> einf=FChgen kann?
>
Ja, gibt es:
WHERE (([Formulare]![UF_MessenProdukte]!
[ID_Messebezeichnung]=3D"Baumesse" OR [Formulare]![UF_MessenProdukte]!
[ID_Messebezeichnung]=3D"Baumesse-2") AND [T_ProdukteBezeichnung]![Code]
Like "*AL")
OR (([Formulare]![UF_MessenProdukte]![ID_Messebezeichnung]=3D"Carfar"
OR [Formulare]![UF_MessenProdukte]![ID_Messebezeichnung]=3D"Carfar-2")
AND [T_ProdukteBezeichnung]![Code] Like "*BA")
OR (([Formulare]![UF_MessenProdukte]![ID_Messebezeichnung]=3D"Baumag"
OR [Formulare]![UF_MessenProdukte]![ID_Messebezeichnung]=3D"Baumag-2")
AND [T_ProdukteBezeichnung]![Code] Like "*CA")
OR (([Formulare]![UF_MessenProdukte]!
[ID_Messebezeichnung]=3D"Forstmesse" OR [Formulare]![UF_MessenProdukte]!
[ID_Messebezeichnung]=3D"Forstmesse-2") AND [T_ProdukteBezeichnung]!
[Code] Like "*FO")
OR (([Formulare]![UF_MessenProdukte]!
[ID_Messebezeichnung]=3D"Waffenb=F6rse" OR [Formulare]![UF_MessenProdukte]!
[ID_Messebezeichnung]=3D"Waffenb=F6rse-2") AND [T_ProdukteBezeichnung]!
[Code] Like "*WA")
OR (([Formulare]![UF_MessenProdukte]![ID_Messebezeichnung]=3D"Bauen
+Wohnen-Aargau" OR [Formulare]![UF_MessenProdukte]!
[ID_Messebezeichnung]=3D"Bauen+Wohnen-Aargau-2") AND
[T_ProdukteBezeichnung]![Code] Like "*BW")
OR (([Formulare]![UF_MessenProdukte]!
[ID_Messebezeichnung]=3D"Antikb=F6rse" OR [Formulare]![UF_MessenProdukte]!
[ID_Messebezeichnung]=3D"Antikb=F6rse-2") AND [T_ProdukteBezeichnung]!
[Code] Like "*AN")
OR (([Formulare]![UF_MessenProdukte]![ID_Messebezeichnung]=3D"Light
+Sound" OR [Formulare]![UF_MessenProdukte]![ID_Messebezeichnung]=3D"Light
+Sound-2") AND [T_ProdukteBezeichnung]![Code] Like "*LS")
OR (([Formulare]![UF_MessenProdukte]![ID_Messebezeichnung]=3D"Bauen
+Wohnen-Luzern" OR [Formulare]![UF_MessenProdukte]!
[ID_Messebezeichnung]=3D"Bauen+Wohnen-Luzern-2") AND
[T_ProdukteBezeichnung]![Code] Like "*LU")
Gru=DF Thomas
--
http://www.thomas-kuehn.de
.
|
|
| Nach oben |
|
 |
Anmeldedatum: 01.01.1970 Beiträge: 312655
|
Verfasst am: So Mai 18, 2008 2:14 am Titel: Abfrage |
|
|
Hallo zusammen
> Gibt es eine andere M=F6glichkeit, dass ich mehr wie neun Eintr=E4ge
> einf=FChgen kann?
Besten Dank f=FCr eure Hilfe, ich war l=E4ngere Zeit weg, daher kann ich
erst jetzt antworten.
Ich habe den Tip von Thomas umgesetzt, da wir relativ selten eine neue
Messe dazu nehmen.
Der Tip von Andr=E9 sieht vielversprechend aus, wenn ich mehr Zeit habe
werde ich dies auch ausprobieren.
Nochmals besten Dank
Gruss Chrigi
.
|
|
| Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht teilnehmen.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|