Zum Inhalt springen

"einfache" mysql abfrage


forTeesSake

Empfohlene Beiträge

hi und hallo,

ist mir sehr peinlich, aber ich habe echt ein problem die richtige mysql-abfrage zu folgendem problem zu finden. (ich glaube mir fehlt irgend ein keyword...)

tabellen

1.fragen

id (PS)

text

2.antworten

id (PS)

fragenID

text

3.benutzerantworten

fragenID

antwortID

benutzerID

es ist ein ganz einfaches umfragesystem

jeder benutzer soll zu jeder frage genau eine antwort geben können

danach ist die frage für ihn nicht mehr sichtbar (er kann sich nur noch die auswertung anschauen)

ich benötige nun eine mysql-abfrage um herauszufinden welche FRAGEN ein benutzer noch nicht beantwortet hat.

beispiel:

benutzer 1 hat von 6 existenten fragen frage 1 und 3 bereits beantwortet.

die abfrage soll mir nun liefern, dass er frage 2,4,5 und 6 noch nicht beantwortet hat.

*schämeinbisserl*

vielen dank im voraus

Link zu diesem Kommentar
Auf anderen Seiten teilen

@enrico: hmm, aber dann bekomme ich ja wieder antworten die der benutzer schon gegeben hat!? :(

und nochmal zu den subqueries.

ich probiere folgendes (ganz einfach, hat mit der sache nix zu tun!)

SELECT id

FROM benutzer

WHERE id

IN (

SELECT benutzerID FROM umfrage_userantworten )

also alle benutzer, die eine antwort gegeben haben.

aber da kommt bei mir immer: (standard error)

"#1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT benutzerID"

wie gesagt mysql 4.0.17 ahhhhhhhhhhhhhhhhhhhhhhhhh!

Link zu diesem Kommentar
Auf anderen Seiten teilen

@enrico: hmm, aber dann bekomme ich ja wieder antworten die der benutzer schon gegeben hat!? :(

und nochmal zu den subqueries.

ich probiere folgendes (ganz einfach, hat mit der sache nix zu tun!)

SELECT id

FROM benutzer

WHERE id

IN (

SELECT benutzerID FROM umfrage_userantworten )

also alle benutzer, die eine antwort gegeben haben.

aber da kommt bei mir immer: (standard error)

"#1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT benutzerID"

wie gesagt mysql 4.0.17 ahhhhhhhhhhhhhhhhhhhhhhhhh!

gibts in der Tabelle "umfrage_userantworten" eine spalte "benutzerID"?

Link zu diesem Kommentar
Auf anderen Seiten teilen

töröööööö! daran liegts also ;) dann werde ich mir die mal draufpacken.

vielen dank!

eine anschliessende frage hätte ich aber nopch. OT sozusagen, bidde nicht schimpfen:

finde ich die von meinem provider verwendete mysql in der phpinfo??

da sehe ich folgenden wert:

MYSQL

Client API version 3.23.49

heisst das, dass der provider mit der version 3.23.49 arbeitet, oder gibt der wert für API version irgend entwas anderes an...?

EDIT: sehe gerade, dass die 4.1 ja erst ne beta ist. hilft mir also im mom nicht weiter.

vielleicht weiss doch noch jemand nen weg wie mans ohne subqueries lösen kann...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Muss denn umbedingt eine SQL Anweisung sein?

Mach doch zwei draus.

Erst ermittelst Du alle Fragen und danach prüfst Du bei jeder Frage ob der User diese schon beantwortet hat. Oder Du ermittelst erst alle Fragen die der User beantwortet hat und dann läst Du dir nur noch die Fragen ausgeben die er noch nicht beantwortet hat.

WHERE fragen NOT in (1, 4, 5, 9)

Frank

Link zu diesem Kommentar
Auf anderen Seiten teilen

@enrico

meine abfrage ist noch deine erste (der left join) aber wenn ich benutzerID mit aufnehme, dann bekomme ich eben wieder fragen die der benutzer schon beantwortet hat.

wenn ich nicht nach benutzerID abfrage, dann bekomme ich alle benutzerantworten, also auch bei benutzer 1 die beantworteten von benutzer 2. heisst, dass obwohl benutzer 1 z.b. frage 1 noch nicht beantwortet hat er die frage nicht mehr bekommt weil benutzer 2 frage 1 schon beantwortet hat.

alles verwirrend. sorry

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...