Startseite ¦  was ist neu ¦  programmier tips ¦  indy artikel ¦  intraweb artikel ¦  informationen ¦  links ¦  interviews ¦  sonstiges
kylix ¦  tutorials ¦  online shop ¦  fotos ¦  Add&Win Gewinnspiel


Willkommen Gast. Bitte einloggen oder registrieren.
22.05.2012, 12:37:39
Übersicht Hilfe Suche Einloggen Registrieren

+  SwissDelphiCenter Forum
|-+  German Forums
| |-+  Datenbank Forum
| | |-+  Primärschlüssel in SQL verwenden (Access)
« vorheriges nächstes »
Seiten: [1] Drucken
Autor Thema: Primärschlüssel in SQL verwenden (Access)  (Gelesen 2337 mal)
Ralf Wittig
Full Member
***
Offline Offline

Beiträge: 174


161337279
WWW
« am: 04.04.2002, 11:27:38 »

Moin,
ich lese mittels SQL (ADO) eine Adresse quer über die Kundennummer. Dieses Feld (Integer) ist Primärschlüssel. Bei ca. 300 Datensätzen, die quergelesen werden, braucht die Kiste fast 5 Minuten - kann doch nicht sein oder ?? Kann ich in einem SQL-Statement den Primärschlüssel angeben oder gibt es sonst eine Möglichkeit. Evtl. mache ich auch irgendwas falsch!

Tks RW
Gespeichert
Adrian Hämmerli
Full Member
***
Offline Offline

Beiträge: 216



WWW
« Antworten #1 am: 04.04.2002, 17:13:12 »

Hallo

Leider verstehe ich dein Problem nicht ganz. Was heisst
"querlesen".

Beschreibe doch etwas näher was du genau machst bzw. was du willst.

mfg

Hammer
Gespeichert

mfg



Adrian Hämmerli
Ralf Wittig
Full Member
***
Offline Offline

Beiträge: 174


161337279
WWW
« Antworten #2 am: 05.04.2002, 09:23:16 »

Moin,
mit Querlesen bezeichnen wir wenn z.B. zu einem Auftrag die Adresse "quergelesen" wird (Kdnr -] Kdnr).

RW
Gespeichert
raik
Sr. Member
****
Offline Offline

Beiträge: 327



« Antworten #3 am: 06.04.2002, 18:23:59 »

5 minuten für eine Abfrage bei 300 Datensätzen?! ich glaube da bist du mit Auge und Händen schneller. du müßtest schon mal Struktur und ein wenig quelltext senden, damit man dir helfen kann.

raik
Gespeichert

verhältnisse, die einem nicht passen,
muß man verändern oder verlassen
Ralf Wittig
Full Member
***
Offline Offline

Beiträge: 174


161337279
WWW
« Antworten #4 am: 07.04.2002, 12:17:38 »

Moin,
ich durchlaufe in einer while-Schleife eine Tabelle mittels ADO-Sql (Datenmodell) "Ansprechpartner". Zu jedem Ansprechp. lese ich über die Kdnr die Adresse quer. Die reine Schleife der Ansprechp. dauert nur ne Sekunde! Lese ich aber die Adresse quer - bis zu naja 3 Minuten! Wobei max. 300 Adressen vorhanden sind.

Gelesen wird per "SQL: SELECT * FROM ADRESSEN WHERE Kdnr = :Kdnr". :Kdnr wird mittels:
"QRY_GetAdresseByKdnr.Parameters.ParamByName('Kdnr').Value := Kdnr;". Die Kdnr ist wiederum Primärschlüssel und vom Typ Integer.

Das Seltsame ist, dass, sobald ich nur eine SQL-Abfrage laufen habe (egal welche!) die immer ausreichend schnell sind - sobald aber zwei in einer Schleife verwendet werden..

Meine Frage war, ob man in der SQL-Anweisung explizit den Primärschlüssel angeben kann oder sowas..

Tks RW
Gespeichert
raik
Sr. Member
****
Offline Offline

Beiträge: 327



« Antworten #5 am: 07.04.2002, 14:06:35 »

nochmal zum verständnis:

du fragst über die sql anweisung nach der Kundennummer in deiner tabelle. dann liest du "quer" die adresse ein, richtig??

mit der abfrage der Kundennummer hast du doch den Datensatz eindeutig gefunden, oder verstehe ich wieder nur bahnhof.

raik
Gespeichert

verhältnisse, die einem nicht passen,
muß man verändern oder verlassen
Ralf Wittig
Full Member
***
Offline Offline

Beiträge: 174


161337279
WWW
« Antworten #6 am: 08.04.2002, 09:45:10 »

Moin,

also. Ich habe zwei Tabellen - eigentlich wie in Beispielprogrammen - eine mit Ansprechpartnern, eine mit Adressen. Beide besitzen das Feld Kundennummer.

Im Programm selektiere ich nun alle Ansprechpartner. Und um zu diesem die Adresse, die in der Adressen-Tabelle steht, anzeigen zu können, lese ich zu jedem Ansprechpartner die Adresse "quer". In einer while-Schleife lese ich also alle ASPs bis eof = false. Bei jedem gefundenen Satz lese ich mit einer weiteren SQL-Anweisung die Adresse. Nur ist eben das Problem, dass das "Querlesen" eben so lange dauert. Lese ich einfach nur die ASPs oder nur die Adressen in einer while-Schleife, geht das rasend schnell!!

Verstanden? RW
Gespeichert
Vladimir
Newbie
*
Offline Offline

Beiträge: 50



« Antworten #7 am: 09.04.2002, 09:24:21 »

Hi

hat es einen Grund, das Du jedesmal ein neues Statement erzeugst und nicht die Abfrage über zwei Tabellen in einem Statement erledigst?

Gut! In Access geht das auch nicht sonderlich schnell aber doch immerhin deutlich schneller als jedesmal den View zu löschen und einen neuen zu erzeugen!

Gruß Vladimir
Gespeichert
Ralf Wittig
Full Member
***
Offline Offline

Beiträge: 174


161337279
WWW
« Antworten #8 am: 10.04.2002, 11:02:17 »

Moin,
hätte ich eigentlich auch selbst drauf kommen können! Ich probiers gleich mal aus!

RW
Gespeichert
Blizzard
Newbie
*
Offline Offline

Beiträge: 11


57715236
« Antworten #9 am: 14.04.2002, 00:15:13 »

hi ich bin mir ned ganz sicher aber ich glaube was du suchst is folgendes
SELECT tabelle1.*, tabelle2.* FROM tabelle1, tabelle2 WHERE tabelle1.id=tabelle2.id
oder
SELECT tabelle1.*, tabelle2.*   FROM Tabelle1 JOIN Tabelle2    
ON tabelle1.id = tabelle2.id
wobei letztere Variante soweit ich weis noch etwas schneller is als die erste

MfG
Blizzard
Gespeichert
Seiten: [1] Drucken 
« vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.11 | SMF © 2006, Simple Machines LLC Prüfe XHTML 1.0 Prüfe CSS