SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden. |
 |

08-02-2010, 14:00
|
elf7013
Registrierter Benutzer
|
|
Registriert seit: Nov 2005
Beiträge: 104
|
|
MySQL Abfrage über mehrere Tabellen
Hallo,
wahrscheinlich eine leichte Frage für die Wissenden unter euch:
Hintergrund:
Im Rahmen einer Veranstaltungsevaluation sollen alle Teilnehmer befragt werden.
Beim Aufruf des Fragebogens möchte ich einem Teilnehmer nun alle Veranstaltungen zur Auswahl geben, die er noch beurteilen kann - also zu denen er noch keinen Fragebogen ausgefüllt hat.
Tabellenstruktur:
Veranstaltungen (VID, ...)
Studierende_Veranstaltungen ( SID, VID, teilgenommen [0,1])
Studierende (SID, ...)
Fragebogen (FID, SID, VID, ...)
Mir will gerade die SQL Abfrage nicht einfallen, um all die Veranstaltungen zu ermitteln, die ein Studierender (Beispiel: SID 113) noch beurteilen kann.
Vielen Dank für eure Hilfe!
|

08-02-2010, 14:17
|
unset
 Moderator
|
|
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.782
|
|
Abgesehen davon, dass dein Post keine Frage zum beantworten enthält: Mit genau dem Topic findest du, wenn du suchst, genau das was du willst. Also: Suchfunktion bemühen!
|

08-02-2010, 14:25
|
elf7013
Registrierter Benutzer
|
|
Registriert seit: Nov 2005
Beiträge: 104
|
|
Besten Dank für deine Antwort.
Meine Frage lautet wie formuliere ich die entsprechende SQL Abfrage.
Dein Hinweis führt mich selbstverständlich zum Thema Joints und ggf. verschachtelte Abfragen, aber ich komme gerade leider zu keiner Lösung.
|

08-02-2010, 14:46
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.709
|
|
Hallo,
wie sieht denn deine Abfrage bisher aus und was funktioniert daran nicht so wie es soll?
Gruß,
Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

08-02-2010, 15:25
|
elf7013
Registrierter Benutzer
|
|
Registriert seit: Nov 2005
Beiträge: 104
|
|
Bisher sah mein Lösungsansatz so aus, dass ich nach die Studierenden_Veranstaltung Tabelle durchsucht habe und eine Lösung in PHP implementiert habe.
Auf dem halben Weg habe ich mich dann daran erinnert, dass die Lösung wahrscheinlich auch mit einer verbesserten Datenbankabfrage funktionieren müsste.
Bisher ist da aber noch nicht viel bei rausgekommen:
SELECT *
FROM Veranstaltungen, Studierende_Veranstaltungen
WHERE SID = 113 AND NOT IN (...)
Tja und beim zweiten Teil habe ich gerade ein Brett vor dem Kopf.
|

08-02-2010, 15:36
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.709
|
|
Da fehlen trotzdem immer noch Infos.
Ich stelle es mir so vor wie nachfolgend beschrieben, obwohl es eigentlich deine Aufgabe ist, das Problem detailliert darzulegen:
Es sollen also alle Datensätze aus Veranstaltungen ermittelt werden, an denen ein Student auch teilgenommen hat, für die es aber noch keinen Datensatz in Fragebogen gibt.
Trifft das soweit zu?
Was ich auch nicht verstehe: Was ist das Feld teilgenommen? Wenn ein Student an einer Veranstaltung nicht teilgenommen hat, sollte es doch für diese Kombination einfach keinen Datensatz in Studierende_Veranstaltungen geben, oder stellt das Feld irgend etwas anderes dar (erfolgreiche Teilnahme, bestandene Prüfung, ausreichende Anwesenheit)?
Das alles klärst du jetzt bitte lückenlos in deiner nächsten Antwort auf.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

08-02-2010, 15:50
|
elf7013
Registrierter Benutzer
|
|
Registriert seit: Nov 2005
Beiträge: 104
|
|
Ich versuche nochmal das Problem zu beschreiben:
Ein Studierende wird zur Bewertung seiner Veranstaltungen eingeladen. Kommt dann durch einen Link zum Fragebogen. Auf dieser Seite sollen in einem Auswahlfeld alle Veranstaltungen erscheinen, die der Studierende noch nicht beurteilt hat (also noch keine Fragebögen existieren).
Also ich möchte all die Veranstaltungsinformationen auslesen, an denen ein Studierende teilgenommen hat. Der Wert "teilgenommen" ist in der Tat nicht von Nöten. Dies leistet ein einfacher Verbund der beiden Tabellen Veranstaltungen und Studierende_Veranstaltung über die anfragende SID des Evaluationslinks.
Welche Information mir nun noch fehlt, ist ob davon bereits Veranstaltungen beurteilt worden sind.
Ich hoffe, dass das Problem nun deutlicher geworden ist. Vielen Dank für die Hilfe!
|

08-02-2010, 15:56
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.709
|
|
Code:
select *
from `Studierende_Veranstaltungen` as s2v
join `Veranstaltungen` as v on v.`VID` = s2v.`VID`
left join `Fragebogen` as f on f.`SID` = s2v.`SID` and f.`VID` = v.`VID`
where f.`FID` is null
and s2v.`SID` = <StudentId>
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
Geändert von AmicaNoctis (08-02-2010 um 16:00 Uhr)
|

10-02-2010, 12:08
|
elf7013
Registrierter Benutzer
|
|
Registriert seit: Nov 2005
Beiträge: 104
|
|
Habe dies mal in die phpMyAdmin Oberfläche eingegeben und bekam einen Fehler 1146
Code:
select *
from `Studierende_Veranstaltungen` as s2v
join `Veranstaltungen` as v on v.`Veranstaltung_ID` = s2v.`Veranstaltung_ID`
left join `Fragebogen` as f on f.`Studierende_ID` = s2v.`Studierende_ID`
and f.`Veranstaltung_ID` = v.`Veranstaltung_ID`
where f.`Veranstaltung_ID` is null
and s2v.`Studierende_ID` = 2
Die Bezeichner sind hier etwas anders und eine Fragebogen ID habe ich nicht mehr, da ein einzelner Fragebogen ja eindeutig durch SID und VID bestimmt ist, da ein Studierende nur einmal zu einer Veranstaltung einen Fragebogen ausfüllen darf.
Geändert von elf7013 (10-02-2010 um 12:37 Uhr)
|

10-02-2010, 12:11
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.709
|
|
Der Fehler besagt, dass irgendetwas nicht existiert. Überprüfe die Namen der Tabellen und Spalten und poste bitte immer die vollständige Fehlermeldung, weil man sonst nicht viel dazu sagen kann.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

10-02-2010, 12:38
|
elf7013
Registrierter Benutzer
|
|
Registriert seit: Nov 2005
Beiträge: 104
|
|
Die komplette Fehlermeldung aus phpMyAdmin liest sich leider nicht viel besser:
"#1146 - "
Das ist alles. Da steht lediglich noch ein gelbes Warn-i vor.
Edit:
Aber besten Dank! Dein Hinweis hat geholfen den Fehler zu finden. Ich hatte tatsächlich eine Tabelle falsch angegeben.
|

10-02-2010, 12:41
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.709
|
|
Dann setz das Statement auf der Kommandozeile oder per PHP ab. PHPMyAdmin ist bei dir entweder kaputt oder du hast eine alte Version, denn eigentlich zeigt es die Fehlermeldungen immer an.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

10-02-2010, 12:51
|
elf7013
Registrierter Benutzer
|
|
Registriert seit: Nov 2005
Beiträge: 104
|
|
Zitat:
Zitat von AmicaNoctis
Dann setz das Statement auf der Kommandozeile oder per PHP ab. PHPMyAdmin ist bei dir entweder kaputt oder du hast eine alte Version, denn eigentlich zeigt es die Fehlermeldungen immer an.
|
Danke für den Hinweis! Werde mich mal an unseren Server Admin wenden 
Abfrage läuft auf jeden Fall rund
Vielen Dank für deine Hilfe und deine Geduld mit mir.
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Thema bewerten |
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|