PDA

Vollständige Version anzeigen : Probleme mit Abfrage


Ironangel
30.09.2005, 12:31
Hallo,

ich habe ein kleines Problem mit einer Abfrage. Die Abfrage in Form eines Bild habe ich angehangen. Ich möchte in meiner Abfrage nur die Werte angezeigt bekommen die sich in der Spalte "schluessel" fast genau gleichen. Die Werte die ich suche sind komplett bis auf die 5 Stelle gleich. Sie unterscheiden sich lediglich durch eine "0" oder eine "9". Diese Werte kommen von Zeit zur Zeit vor. Bei diesen Werten die ich suche ist das Datum und die Uhrzeit immer genau gleich. Wie bekomme ich es hin das mir nur die Daten angezeigt werden die sich gleichen?

Gruß

Ironangel

Smaug
30.09.2005, 12:39
hierfür sollte eine zusätzliche Abfragespalte genügen:
Teilschlüssel: Links([Schluesel);5)
nach dieser kann man dann auch gruppieren wenn gewünscht

molnar
30.09.2005, 12:53
Erstelle eine Abfrage, die deine Tabelle 2x enthält. Die Tabelle wird dann einmal als "Tabellenname" und einmal als "Tabellenname_1" angezeigt.
Verknüpfe die beiden Tabellen über alle Felder, die gleich sein müssen, mit der Verknüpfungseigenschaft 2 (alle aus Tabellenname und nur die passenden aus Tabellenname_1).
Übernimm alle Felder aus Tabellenname und das Feld "schlüssel" aus Tabellenname_1 in die Abfrage.
Beim 2. Schlüsselfeld änderst du Feld zu "schluessel_2: schluessel" und trägst unter Kriterien ein: <> [Tabellenname].[schluessel] und wie links([Tabellenname].[schluessel];4) & "?" & teil(([Tabellenname].[schluessel];6)

Probier's mal aus,
Reinhard

Ironangel
30.09.2005, 14:53
Ich werde versuchen eure Tips umzusetzen. Danke

Ironangel
01.10.2005, 07:15
Morgen,

ich habe versucht die Hilfen umzusetzen. Klappen bei mir aber beide nicht. Irgendeine Idee? Ich hänge mal die SQL Abfrage mit dran:

SELECT tabelle.probenahmezp, tabelle.pgwert, tabelle.pg_id, tabelle.schluessel, tabelle_1.schluessel AS schluessel_2
FROM tabelle LEFT JOIN tabelle AS tabelle_1 ON tabelle.schluessel = tabelle_1.schluessel
WHERE (((tabelle.pg_id)="SiO" And (tabelle.pg_id)="CaO") AND ((tabelle_1.schluessel)<>[tabelle].[schluessel] And (tabelle_1.schluessel) Like Left([tabelle].[schluessel],4) & "?" & Mid([tabelle].[schluessel],6)));

Anne Berg
01.10.2005, 11:52
... ON tabelle.schluessel = tabelle_1.schluessel
...Hier musst du den Vergleich einsetzen, den du wohl in die Where-Klausel gepackt hast, der dort aber keinen Sinn mehr macht.

Achtung:
Diese Verknüpfung ist dann aber nicht mehr in der Entwurfsansicht darstellbar, das kannst du nur im SQL-Fenster eingeben!!

Ironangel
02.10.2005, 05:26
Sorry, ich steh auf dem Schlauch. Wie meinst du das?

Nouba
02.10.2005, 07:16
WHERE (((tabelle.pg_id)="SiO" And (tabelle.pg_id)="CaO")kann definitiv nicht eintreten - allerhöchstens kann eine Bedingung zutreffen, weswegen Or als Schlüsselwort einzusetzen ist.

Anne Berg
02.10.2005, 13:35
Und ich meinte:... ON Left(tabelle_1.schluessel,4) = Left([tabelle].[schluessel],4) AND Mid(tabelle_1.schluessel,6) = Mid([tabelle].[schluessel],6)
WHERE (((tabelle.pg_id)="SiO" or (tabelle.pg_id)="CaO") AND ((tabelle_1.schluessel)<>[tabelle].[schluessel]));

Ironangel
02.10.2005, 16:09
Oh, Danke! Ich werde es morgen früh ausprobieren.

Ironangel
03.10.2005, 06:25
Hm,

Verknüpfungsausdruck nicht unterstützt. Was kann ich jetzt noch machen?

Nouba
03.10.2005, 07:28
Was kann ich jetzt noch machen?Zeigen, was Du jetzt gemacht hast.

Ironangel
03.10.2005, 07:47
SELECT tabelle.probenahmezp, tabelle.pgwert, tabelle.pg_id, tabelle.schluessel, tabelle_1.schluessel AS schluessel_2
FROM tabelle LEFT JOIN tabelle AS tabelle_1 ON Left(tabelle_1.schluessel,4) = Left([tabelle].[schluessel],4) AND Mid(tabelle_1.schluessel,6) = Mid([tabelle].[schluessel],6)
WHERE (((tabelle.pg_id)="SiO" or (tabelle.pg_id)="CaO") AND ((tabelle_1.schluessel)<>[tabelle].[schluessel]));

Nouba
03.10.2005, 08:11
Der Assistent zur Duplikatsuche erstellt ungefähr soetwas.

SELECT
T.probenahmezp
, T.schluessel
, T.CAO
, T.SIO
FROM Tabelle AS T
WHERE T.probenahmezp In (
SELECT
probenahmezp
FROM Tabelle
GROUP BY probenahmezp
HAVING Count(*) > 1 )

Ironangel
03.10.2005, 09:33
Sorry, ich versteh das nicht. Bin nicht so bewandert.

Nouba
03.10.2005, 09:38
Was verstehst Du denn konkret nicht?

Anne Berg
03.10.2005, 11:01
Ich vermute, es liegt an dem "Left Join". Es sollte eine normale Verknüpfung, also "Inner Join" sein.

Ironangel
03.10.2005, 11:42
@ nouba

Eigentlich dein ganzes letztes Posting.

@ Anne Berg

Ich versuch es einmal. Danke

Nouba
03.10.2005, 12:14
Das ist die SQL-Ansicht einer Abfrage, die u. a. Alias-Namen (T) verwendet - siehe Tabelle As T - damit der Abfragetext kürzer wird. Das Kriterium (so erstellt es auch der schon einmal genannte Abfrage-Assistent zur Duplikatsuche) wird über das Datumsfeld gelegt und bezieht in einer gruppierten Unterabfrage nur die Datensätze ein, die mehr als 1x den gleichen Feldinhalt aufweisen.

Nun, ich weiß nicht, ob das ausreichend ist. Es können ja theoretisch auch mehrere Messwerte zur selben Zeit erfasst werden.

Wenn Du Gewalt über das Feld schluessel hast, so teile das Feld auf, damit Operationen über die Feldinhalte schneller ablaufen. Der hintere Zahlenklimbim wird ja sowieso bereits durch den Zeitpunkt redundant ausgewiesen. Einem späteren Zusammensetzen (das geht ja flott) in Abfragen, Berichten, Formularen steht nichts im Wege.

Ironangel
03.10.2005, 15:38
Ok, ich versuche es mal. Melde mich bestimmt wieder :grins:

Ironangel
04.10.2005, 09:59
Ich bekomme es einfach nicht hin. Ich habe alles versucht was ihr geschrieben habt aber es klappt einfach nicht. Habt ihr vielleicht irgendeine andere Idee?

Anne Berg
17.10.2005, 10:10
Hallo, was macht dein Abfrageproblem?

Ich denke, so sollte es klappen:SELECT tabelle.probenahmezp, tabelle.pgwert, tabelle.pg_id, tabelle.schluessel, tabelle_1.schluessel AS schluessel_2
FROM tabelle, tabelle AS tabelle_1
WHERE (((tabelle.pg_id)="SiO" OR (tabelle.pg_id)="CaO")
AND ((tabelle_1.schluessel)<> tabelle.schluessel
And Left(tabelle_1.schluessel, 4) = Left(tabelle.schluessel, 4)
And Mid(tabelle_1.schluessel, 6) = Mid(tabelle.schluessel, 6)));