| 
		|  Willkommen |  
	|  |  
 
		|  myGully |  
	|  |  
 
		|  Links |  
	|  |  
 
		|  Forum |  
	|  |  
 |  | 
	
		|  |  
	
	
		
	
	
	
		|  16.12.12, 18:48 | #1 |  
	| Anfänger 
				 
				Registriert seit: Nov 2009 
					Beiträge: 39
				 
		
			
				 Bedankt: 8 
			
		
	      | 
				 Access2010 -SQL: alle Datensätze aus li. Tabelle, einzelner Datensatz aus re. Tabelle 
 
			
			Hallo Zusammen!
 
 ich bin in SQL noch nicht so weit, dass ich folgendes Problem gelöst bekomme und auch über
 google habe ich keine passenden Infos gefunden (wahrscheinlich weil ich nicht weiß wonach ich suchen muss;-))
 
 Ich habe folgende zwei Tabellen:
 
 Tabelle_Fahrzeuge
 ------------------------
 FahrzeugID
 Bezeichnung
 Kennzeichen
 Reserve(Boolean)
 
 
 Tabelle_ReserveAbgabe
 -----------------------------
 ID
 FahrzeugID
 AbgabeDatum
 Text
 RueckgabeDatum
 
 
 Ich möchte (möglichst mit einer Abfrage) alle Reservefahrzeuge
 
 [SELECT * FROM Tabelle_Fahrzeuge WHERE Reserve=true]
 
 und den jeweils dazu passenden Datensatz aus der Tabelle_ReserveAbgabe auslesen.
 Dabei ist der "passende Datensatz" immer derjenige, bei dem kein Rückgabedatum eingetragen wurde oder es gibt für das entsprechende Fzg keinen Datensatz in der Tabelle_ReserveAbgabe.
 
 Sollte dann so aussehen:
 
 Bez.            Abgabe         Text               Rückgabe
 RTW 4-R     01.12.2012    an FW6            -
 RTW 4-5     -
 WLF 4-1      -
 RBUS 4       06.11.2012    Fahrschule       -
 
 Heißt umgekehrt wenn ein Rückgabedatum eingetragen wird, verschwindet der angehängte Datensatz wieder.
 
 Wird klar was ich versuche?
 
 MfG
 pL
 |  
	|   |   |  
	
		
	
	
	
		|  16.12.12, 22:04 | #2 |  
	| Banned 
				 
				Registriert seit: Mar 2012 
					Beiträge: 337
				 
		
			
				 Bedankt: 93 
			
		
	      | 
 
			
			Ich versteh das Problem nicht.Das sollte doch eine einfache SELECT FROM WHERE Abfrage sein...
 Wie sieht denn Deine Abfrage aus?
 
 Alternativ kannst Du auch ein JOIN verwenden.
 |  
	|   |   |  
	
		
	
	
	
		|  16.12.12, 23:37 | #3 |  
	| Anfänger 
				 
				Registriert seit: Nov 2009 
					Beiträge: 39
				 
		
			
				 Bedankt: 8 
			
		
	      | 
				  
 
			
			Du hast recht, mit Join kann man schon einiges erreichen... 
	Code: SELECT tblFahrzeuge.Fahrzeugkennung, tblFahrzeuge.ReserveFahrzeug, tblReserveFahrzeugAbgabe.AbgabeDatum, tblReserveFahrzeugAbgabe.Nachricht, tblReserveFahrzeugAbgabe.RueckgabeDatum
FROM tblFahrzeuge 
LEFT JOIN tblReserveFahrzeugAbgabe ON tblFahrzeuge.FahrzeugID = tblReserveFahrzeugAbgabe.FahrzeugID
WHERE tblFahrzeuge.ReserveFahrzeug=True; 
Mit dieser Abfrage werden immer alle verfügbaren Fahrzeuge angezeigt und wenn existent auch der entsprechende Datensatz aus der "Leihliste". Der Datensatz aus der Leihliste soll aber nur angezeigt werden, wenn das Rückgabedatum nicht eingetragen ist (das Fahrzeug wurde verliehen und wurde noch nicht zurück gebracht)
 
Also z.B. so ein Ergebnis:
 
	Code: Fzg:          Datum:         Text:      Rückgabe
RTW 4-R   01.12.2012    an FW6       10.12.2012   <--- das soll nicht so
RTW 4-5    10.11.2012    an FW10     (noch nicht zurück)    <--- das soll so
WLF 4-1     -        <--- das soll auch so 
Wenn ich aus  
	Code: WHERE tblFahrzeuge.ReserveFahrzeug=True; z.B. 
	Code: WHERE tblFahrzeuge.ReserveFahrzeug=True AND IsNull(tblReserveFahrzeugAbgabe.RueckgabeDatum)=True; mache, hat das zur Folge das folgendes Ergebnis heraus kommt:
 
	Code: Fzg:          Datum:         Text:      Rückgabe
WLF 4-1     - (weil dies das einiges Fahrzeug ist für das es keinen Datensatz in der zweiten Tabelle gibt, bzw. wo o.g. Bedingung zutrifft)
 
D.h. folgendes Ergebnis wäre mein Wunsch:
 
	Code: Fzg:          Datum:         Text:      Rückgabe
RTW 4-R   -  (selbe wie oben, aber da ein Rückgabedatum eingetragen ist wird nur der Fahrzeugname angezeigt)
RTW 4-5    10.11.2012    an FW10     (noch nicht zurück)
WLF 4-1     - 
Wird es jetzt eindeutiger?
 
MfG pL
		 |  
	|   |   |  
	
		
	
	
	
		|  16.12.12, 23:54 | #4 |  
	| Banned 
				 
				Registriert seit: Aug 2012 
					Beiträge: 223
				 
		
			
				 Bedankt: 68 
			
		
	      | 
 
			
			Nein!
		 |  
	|   |   |  
	
		
	
	
	
		|  17.12.12, 00:29 | #5 |  
	| Erfahrenes Mitglied 
				 
				Registriert seit: Oct 2009 
					Beiträge: 636
				 
		
			
				 Bedankt: 228 
			
		
	      | 
 
			
			SELECT * FROM Tabelle_ReserveAbgabe WHERE RueckgabeDatum IS NOT NULL
 Suchst du das?
 
 Wenn es dir aber darum geht, was er anzeigen soll, dann wird es dir nicht erspart bleiben, zwei getrennte selects zu machen ... Jedoch wird ja diene Abfrage doch eh in einem Programm (PHP, Java, ...) verarbeitet ... also mach dort diese Abfragen und stelle es dort dann deinen Wünschen entsprechend da ...
 |  
	|   |   |  
	
		
	
	
	
		|  17.12.12, 08:12 | #6 |  
	| Banned 
				 
				Registriert seit: Aug 2012 
					Beiträge: 223
				 
		
			
				 Bedankt: 68 
			
		
	      | 
 
			
			@slahn
 Das kann es nicht sein, denn du fragst nur eine Tabelle ab.
 Zwei Selects kann man auch mit einer Query durchführen.
 
 Aber es ist gänzlich unklar was der TE überhaupt will.
 |  
	|   |   |  
	
		
	
	
	
		|  17.12.12, 08:13 | #7 |  
	| Anfänger 
				 
				Registriert seit: Nov 2009 
					Beiträge: 39
				 
		
			
				 Bedankt: 8 
			
		
	      | 
 
			
			Ok, ich formuliere es mal so:
 Würde ich zwei getrennte Selects machen, würde das so (ähnlich) aussehen:
 
 
 
 SELECT * FROM tblFahrzeuge WHERE Reserve=True;
 
 und
 
 SELECT * FROM tblReserveFahrzeugAbgabe WHERE RueckgabeDatum IS NULL;
 
 dann würde man die beiden Programmtechnisch verknüpfen. Dann würde immer alle Fahrzeuge angezeigt, aber nur die zusätzlichen Daten wenn RueckgabeDatum=NULL
 
 Bei den o.g. Abfragen bekommt man entweder nur die Fahrzeuge ohne Gegeneintrag oder alle - inkl. Rückgabedatum.
 
 Da ich mit Access "arbeiten" muss möchte ich aber EINE abfrage, damit ich mir kein VBA-Makro basteln muss um das was ich möchte darzustellen.
 
 
 MfG pL
 |  
	|   |   |  
	
		
	
	
	
		|  17.12.12, 19:33 | #8 |  
	| OS X'ler 
				 
				Registriert seit: Aug 2012 Ort: /dev/random 
					Beiträge: 39
				 
		
			
				 Bedankt: 8 
			
		
	      | 
 
			
			Bevor du noch dreimal erklärst, was du möchtest, solltest du ( in einem einzigen, neuen Post, also nichts von siehe oben , bitte ) deine Tabellenstruktur darstellen (am besten in Codeblöcken)einen Beispieldatensatz postenund in zwei, drei Sätzen erklären, was du aus Tabelle #1 und Tabelle #2 willst und wie die Daten verknüpft sind
 
Sonst wird das hier nie etwas.
		
				__________________Ghost hardware.
 |  
	|   |   |  
	
		
	
	
	
		|  17.12.12, 20:08 | #9 |  
	| Banned 
				 
				Registriert seit: Aug 2012 
					Beiträge: 223
				 
		
			
				 Bedankt: 68 
			
		
	      | 
 
			
			Und schon wieder scheitert man an der sprachliche Barriere mit der Muttersprache.
		 |  
	|   |   |  
	
		
	
	
	
		|  17.12.12, 20:22 | #10 |  
	| Erfahrenes Mitglied 
				 
				Registriert seit: Oct 2009 
					Beiträge: 636
				 
		
			
				 Bedankt: 228 
			
		
	      | 
 
			
			Mein letzter Versuch: 
	Code: SELECT Tabelle_Fahrzeuge.Bezeichnung,  Tabelle_ReserveAbgabe.AbgabeDatum, Tabelle_ReserveAbgabe.Text FROM Tabelle_Fahrzeuge WHERE Tabelle_Fahrzeuge.Reserve=True INNER JOIN Tabelle_ReserveAbgabe ON Tabelle_Fahrzeuge.FahrzeugID=Tabelle_ReserveAbgabe.FahrzeugID Nicht getestet ...
		 |  
	|   |   |  
	
		
	
	
	
		|  17.12.12, 20:35 | #11 |  
	| Banned 
				 
				Registriert seit: Mar 2012 
					Beiträge: 337
				 
		
			
				 Bedankt: 93 
			
		
	      | 
 
			
			slahn... mag sein, aber hast Du schon versucht die Sätze des TEs zu verstehen? 
Daran scheitern wir!
 
	Zitat: 
	
		| 
					Zitat von pro-logic  Dann würde immer alle Fahrzeuge angezeigt, aber nur die zusätzlichen Daten wenn RueckgabeDatum=NULL |  |  
	|   |   |  
	
		
	
	
	
		|  17.12.12, 21:11 | #12 |  
	| Erfahrenes Mitglied 
				 
				Registriert seit: Oct 2009 
					Beiträge: 636
				 
		
			
				 Bedankt: 228 
			
		
	      | 
 
			
			Versucht ja, aber meine Antworten haben eher etwas mit Raten zu tun ... einfach blind ins Leere geschossen und hoffen dass die Antwort richtig ist, oder den TE dazu bringt, eine bessere Erklärung abzugeben ...    |  
	|   |   |  
	
		
	
	
	
		|  24.12.12, 10:50 | #13 |  
	| Anfänger 
				 
				Registriert seit: Nov 2009 
					Beiträge: 39
				 
		
			
				 Bedankt: 8 
			
		
	      | 
 
			
			Da ich offenbar besser darin Probleme zu erzeugen, als sie zu beschreiben habe ich mich nochmal eingehend mit SQL (JOINS und Subselects) beschäftigt.
 Folgende Abfrage bringt das gewünschte Ergebnis:
 (Die Tabellen sind dabei wie oben beschrieben)
 
 SELECT tblFahrzeuge.Fahrzeugkennung, tblFahrzeuge.ReserveFahrzeug, tRFA.AbgabeDatum, tRFA.Nachricht, tRFA.RueckgabeDatum
 FROM tblFahrzeuge LEFT JOIN (SELECT * FROM tblReserveFahrzeugAbgabe WHERE IsNull(RueckgabeDatum)<>False)  AS tRFA ON tblFahrzeuge.FahrzeugID = tRFA.FahrzeugID
 WHERE tblFahrzeuge.ReserveFahrzeug=True;
 
 
 Es werden IMMER ALLE Reservefahrzeuge in der Liste angezeigt. Zusätzlich werden die Felder aus der zweiten Tabelle angezeigt. Diese sind Leer wenn Rückgabe<>0 und zeigen Abgabe und Empfänger wenn Rückgabe=0.
 
 Bei Bedarf kann ich gerne Screenshots nachliefern um es zu verdeutlichen.
 
 
 Danke allen!
 
 MfG pL
 |  
	|   |   |  
	
		
	
	
	
		|  24.12.12, 13:35 | #14 |  
	| Banned 
				 
				Registriert seit: Mar 2012 
					Beiträge: 337
				 
		
			
				 Bedankt: 93 
			
		
	      | 
 
			
			Oh je je, du solltest Dir.schnell aneignen zu beschreiben was der IST und der SOLL-Zustand seien solleHelfen könnte ich Dir ja, nur muss schon klar sein, was zu tun ist. Soll... Ist...
		 |  
	|   |   |  
	
		
	
	
	
	
	| 
	|  Forumregeln |  
	| 
		
		Du kannst keine neue Themen eröffnen Du kannst keine Antworten verfassen Du kannst keine Anhänge posten Du kannst nicht deine Beiträge editieren 
 HTML-Code ist Aus. 
 |  |  |  Alle Zeitangaben in WEZ +1. Es ist jetzt 06:15 Uhr. ().
 
	
	
		
	
	
 |