[GastForen Programmierung/Entwicklung PHP und MySQL Abfrage aus Verknüpfungstabelle

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

Abfrage aus Verknüpfungstabelle

Phips_CH
Beiträge gesamt: 74

3. Jun 2013, 21:41
Beitrag # 1 von 5
Bewertung:
(5021 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Zusammen

ich hab eine Tabelle, die aus 4 Spalten besteht.
ID, id_tabelle1, id_tabelle2, id_tabelle3.

id_tabelle1 beinhaltet die ID der Tabelle mit den Namen.
id_tabelle2 beinhaltet die ID der Tabelle mit dem Datum, wann ein Amt angetreten wurde.
id_tabelle3 beinhaltet die ID der Tabelle mit dem Datum, wann von einem Amt zurückgetreten wurde. (gleiche Tabelle wie id_tabelle2)

Wenn jemand ein Amt antritt gibt das einen Datensatz mit der id des Namens und bei id_tabelle2 die id des Datums, bei id-Tabelle3 steht eine "1".

Wenn jemand von einem Amt zurücktritt, gibt das einen Datensatz mit wo bei id_tabelle1 die id des Namen drin steht, bei id_tabelle2 eine "1" und bei id_tabelle3 die id des Datums.

Nun möchte ich den Datensatz, wo jemand angetreten hat und nicht zurückgetreten ist.

Ich hab es zuerst versucht mit drei Abfragen.
-> alle die das Amt angetreten haben (id_tabelle1 <> 1)

Danach eine Abfrage
-> alle die vom Amt nicht zurückgetreten sind (id_tabelle2 = 1)

wie füge ich die zwei Abfragen so zusammen das ich nur den einen Datensatz habe von der Person die aktuell das Amt ausführt.

Gruss
Phips_CH
X

Abfrage aus Verknüpfungstabelle

Phips_CH
Beiträge gesamt: 74

20. Jun 2013, 20:52
Beitrag # 2 von 5
Beitrag ID: #514069
Bewertung:
(4937 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich hab meine mySQL-Tabelle so angepasste, dass ich eine Spalte habe, wo ich den Status reinschreibe. 1 für Amt angetreten und 2 für Amt zurückgetreten.

nun mach ich zwei Abfragen:
Code
SELECT *  
FROM Tabelle
WHERE Spalte_Amt= 5 AND Spalte_Amt_angetreten = 2


und dann:
Code
SELECT *  
FROM Tabelle
WHERE Spalte_Amt= 5 AND Spalte_Amt_angetreten = 1 AND Spalte_IDname <> colname


zuerst erfahre ich wer vom Amt je zurückgetreten ist.

in der zweiten Abfrage möchte ich herausfinden wer das Amt angetreten ist und welcher Name nie zurückgetreten ist.

aber ich erhalte immer das falsche Resultat. was mach ich falsch?


als Antwort auf: [#513350]

Abfrage aus Verknüpfungstabelle

flobaer
Beiträge gesamt: 317

3. Jul 2013, 11:03
Beitrag # 3 von 5
Beitrag ID: #514562
Bewertung:
(4879 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Phips,

um Deine Frage beantworten zu können, fehlt mir hier noch ein wenig der Überblick über das, was Du hier eigentlich erreichen willst. Mir ist zum Beispiel überhaupt nicht klar, warum Du nicht mit zwei Tabellen "Personen" und "Amtszeiten" auskommst.

Wenn Du Dir aber sicher bist, dass Dein Datenbankmodell richtig und sinnvoll ist, müsstest Du hier noch ein wenig mehr Informationen fallen lassen, damit Dir geholfen werden kann.

Viele Grüße
Florian


als Antwort auf: [#514069]

Abfrage aus Verknüpfungstabelle

Phips_CH
Beiträge gesamt: 74

3. Jul 2013, 13:37
Beitrag # 4 von 5
Beitrag ID: #514572
Bewertung:
(4860 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo

Ich möchte mit meiner Tabelle einen Datensatz erstellen wenn jemand ein Amt antritt, und einen derjenige vom Amt zurücktritt. So hab ich für später eine History.

In meiner Tabelle steht die ID, die ID aus der Tabelle „Amt“, die ID aus der Tabelle „Name“, de ID aus der Tabelle mit den Jahreszahlen, „angetreten/zurückgetreten“ (da steht „1“ für angetreten und „2“ für zurückgetreten)

Nun möchte ich für meine Seite zum Beispiel abfragen, wer ist aktuell Präsident. Es gibt mehrere Datensätze die beim Amt die ID des Präsidenten haben, und es gibt auch mehrere die vom Amt zurückgetreten sind. Aber es gibt einen Datensatz mehr bei dem bei angetreten/zurückgetreten eine 1 hat. Denn jemand hat das Amt angetreten und ist nicht zurückgetreten. Da ich die Tabelle als History verwenden möchte und später evt. einmal mit weiteren Ereignissen erweitern möchte, sehe ich es als sinnvoll für jedes Ereignis einen Datensatz zu generieren.


als Antwort auf: [#514562]

Abfrage aus Verknüpfungstabelle

MurphysLaw
Beiträge gesamt: 588

8. Jul 2013, 16:21
Beitrag # 5 von 5
Beitrag ID: #514750
Bewertung:
(4819 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Wie wär's denn ganz simpel mit (Pseudo-SQL):
Code
SELECT TOP 1 FROM Tabelle WHERE Amt=Präsi ORDER BY datum_angetreten DESC 


Wer's zuletzt angetreten hat, sollte eigentlich der aktive sein, oder?
;-)


als Antwort auf: [#514572]
(Dieser Beitrag wurde von MurphysLaw am 8. Jul 2013, 16:21 geändert)
X