Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
SQL Abfrage
zurück: Komplexe Beziehungen... wie baue ich mein Formular auf weiter: datumfeld Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Bitte Status wählen ! Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
tocotronicx
Im Profil kannst Du frei den Rang ändern


Verfasst am:
18. Jun 2004, 08:47
Rufname:

SQL Abfrage - SQL Abfrage

Nach oben
       

Hallo Leute.

Ich wollte mir eine Abfrage erstellen, leider schaff ich das irgendwie nicht ganz.
Wäre echt toll wenn mir da wer helfen kann.

In tbl_Anlage gibt es ein Ja/Nein Feld.Hierbei kann immer nur eines aktiv sein.
Ich filtere jetzt die ID der aktuellen Auswahl.
Code:
SELECT ID FROM tbl_Anlage WHERE Auswahl=true;

Sagen wir zu dem Code mal Teil1

So jetzt muss ich schaun wie oft diese ID in meiner kompletten tbl_Anlage vorkommt, also:
Code:
SELECT COUNT(tbl_anlage.ID) As IDANZ FROM tbl_Anlage,Teil1 WHERE Teil1.ID=tbl_Anlage.ID

Soweit so gut.
Jetzt das Problem.

Ich möchte nun aus der Tabelle tbl_geraeteused Einträge löschen wenn IDANZ=1 ist.

tbl_geraeteused
[ID],[Baugruppe],[Projektname],[Projektnummer],[IDProjekt]

[ID] und [IDProjekte] machen das ganze eindeutig.

Die richtige IDProjekt bekomm ich über:
Code:
SELECT IDProjekt FROM tbl_projekte WHERE Aktuell=true

tbl_projekte und tbl_geraeteused haben eine 1:n Beziehung über IDProjekte.

und die richtige ID hab ich ja schon aus Teil1.

Puh schaut ja kompliziert aus, wäre aber echt für jeden Hinweis dankbar.

Hab das ganze schon händisch in VBA ausprogrammiert, is aber meiner Meinug nach langsam, und drum möcht ichs jetzt über ne SQL Abfrage lösen.

Vielleicht hilft ja der VBA Code auch ein bisschen:
Code:
Dim rs1 As ADODB.Recordset
Dim rs2 As ADODB.Recordset
Set rs1 = New ADODB.Recordset
Set rs2 = New ADODB.Recordset
rs1.ActiveConnection = CurrentProject.Connection
rs2.ActiveConnection = CurrentProject.Connection
rs1.Open "tbl_anlage", , adOpenDynamic, , adCmdTable
rs1.filter = "Auswahl=true"
If rs1.EOF = True Then
  msgbox "Sie haben noch keine Auswahl getroffen", vbOKOnly + vbInformation, "Kontrolle"
  rs1.Close
  Set rs1 = Nothing
  Set rs2 = Nothing
  Exit Sub
End If
rs2.Open "tbl_geraeteliste", , adOpenDynamic, , adCmdTable
rs2.filter = "Gerätegruppe=" & rs1!Gerätegruppe

If rs1.EOF = False And rs2.EOF = False Then
  rs2.Close
  Set rs2 = Nothing
 
  If rs1!Vorhanden = True Then
    ID = Trim(Str(rs1!ID))
    rs1.filter = "ID= '" & ID & "'"
    rs1.MoveFirst
    rs1.MoveNext
    If rs1.EOF = True Then
      rs1.Close
      Set rs1 = Nothing
      Set rs1 = New ADODB.Recordset
      rs1.ActiveConnection = CurrentProject.Connection
      rs1.Open "tbl_projekte", , adOpenDynamic, , adCmdTable
      rs1.filter = "Aktuell=true"
      Baugruppe = Trim(rs1!Baugruppe)
      Kennwort = Trim(rs1!Name)
      Projektnummer = Trim(rs1!Projektnr)
      Dim rs20 As ADODB.Command
      Set rs20 = New ADODB.Command
      rs20.ActiveConnection = CurrentProject.Connection
      strSQL = "DELETE FROM tbl_Geraeteused WHERE ID=" & ID & " AND Baugruppe='" & Baugruppe & "' AND Projektnummer='" & Projektnummer & "' AND Kennwort='" & Kennwort & "'"
      rs20.CommandText = strSQL
      rs20.CommandType = adCmdText
      rs20.Execute
      rs20.ActiveConnection.Close
      Set rs20 = Nothing
    End If
  End If

Naja wie gesagt wäre echt für jede Hilfe sehr dankbar!!

MfG Bernhard
faßnacht(IT);
www.Office-Loesung.de Administrator


Verfasst am:
25. Jun 2004, 15:04
Rufname: Peter

Subselect - Subselect

Nach oben
       

Hallo Smile
Sicherlich ist es über Subselects zu lösen. Erstmal sollte die Löschabfrage so aussehen:
Code:
DELETE * FROM tbl_geraeteused WHERE ID IN( ...Subselect1...) AND IDProjekt IN(...Subselct2...)

Subselect 1:
Code:
SELECT tbl_anlage.ID AS ID, COUNT(tbl_anlage.ID) As IDANZ FROM tbl_Anlage INNER JOIN Teil1 ON (tbl_Anlage.ID= Teil1.ID)
WHERE Auswahl = TRUE
GROUP BY tbl_anlage.ID
HAVING COUNT(tbl_anlage.ID) = 1

Subselect 2:
Code:
SELECT IDProjekt FROM tbl_projekte WHERE Aktuell=true

Alles in allem sollte die Lösung ungefähr so aussehen:
Code:
DELETE * FROM tbl_geraeteused
WHERE ID IN(SELECT tbl_anlage.ID AS ID, COUNT(tbl_anlage.ID) As IDANZ
  FROM tbl_Anlage
    INNER JOIN Teil1 ON (tbl_Anlage.ID= Teil1.ID)
  WHERE Auswahl = TRUE
  GROUP BY tbl_anlage.ID
  HAVING COUNT(tbl_anlage.ID) = 1)
AND IDProjekt IN(SELECT IDProjekt FROM tbl_projekte WHERE Aktuell=true)
testen konnte ich das natürlich nicht, aber auch wenns irgendwo klemmt ist es mal ein erster Schritt. VORSICHT! Beim testen dran denken, dass Daten gelöscht werden, also eine Kopie der DB verwenden.
_________________
na, hilft das weiter?
ciao Smile
Peter Faßnacht
Gast



Verfasst am:
25. Jun 2004, 15:32
Rufname:


AW: SQL Abfrage - AW: SQL Abfrage

Nach oben
       

Na da sag ich dann mal herzlichen Dank!!

Ich werd das am Montag dann mal ausprobieren!!

MfG Bernhard
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum 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 mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Tabellen & Abfragen: [DANKE-ERLEDIGT] Join in einer Abfrage 2 Gast 803 01. März 2004, 08:36
ppc [DANKE-ERLEDIGT] Join in einer Abfrage
Keine neuen Beiträge Access Tabellen & Abfragen: Wie kann ich mehr als 255Felder in eine Abfrage legen? 1 D.R. 2235 12. Feb 2004, 09:05
faßnacht(IT); Wie kann ich mehr als 255Felder in eine Abfrage legen?
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage verlinken 4 dfo 1326 10. Feb 2004, 22:17
Willi Wipp Abfrage verlinken
Keine neuen Beiträge Access Tabellen & Abfragen: Suche Hilfe zu SQL (DAO 351 MS) - Abfrage 3 Berny_H 1005 04. Feb 2004, 11:41
borstel Suche Hilfe zu SQL (DAO 351 MS) - Abfrage
Keine neuen Beiträge Access Tabellen & Abfragen: Diese Abfrage geht nicht. Kann ir jemand helfen 4 Oliver 1438 02. Feb 2004, 13:21
Willi Wipp Diese Abfrage geht nicht. Kann  ir jemand helfen
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage, die sich auf 2 Abfragen + 1 Tabelle bezieht 1 caro456 1832 27. Jan 2004, 20:03
Willi Wipp Abfrage, die sich auf 2 Abfragen + 1 Tabelle bezieht
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage von Datensätzen ohne Inhalt 3 sebwa 2053 23. Jan 2004, 23:19
Gast Abfrage von Datensätzen ohne Inhalt
Keine neuen Beiträge Access Tabellen & Abfragen: Access abfrage nach 2 parametern 1 Weedy 3466 13. Jan 2004, 00:21
reke Access abfrage nach 2 parametern
Keine neuen Beiträge Access Tabellen & Abfragen: Access 97 Abfrage Duplikate 9 gast 2419 02. Dez 2003, 14:39
Kay Access 97 Abfrage Duplikate
Keine neuen Beiträge Access Tabellen & Abfragen: Hilfe beim Tabellen erstellen in Access - SQL 1 Tomy 6703 27. Nov 2003, 15:53
Caladan Hilfe beim Tabellen erstellen in Access - SQL
Keine neuen Beiträge Access Tabellen & Abfragen: SQL Abfrage mit VBA 3 daMike 1729 26. Nov 2003, 17:58
daMike SQL Abfrage mit VBA
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage mit Spalte zur Durchnummerierung 2 Hanno 921 20. Nov 2003, 12:18
Hanno Abfrage mit Spalte zur Durchnummerierung
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Microsoft Excel Tricks