Einzelnen Beitrag anzeigen
  #3  
Alt 02.10.2016, 21:20:45
xandlsoft xandlsoft ist offline
Anfänger
 
Registriert seit: Oct 2016
Alter: 51
Beiträge: 3
AW: Subquery od. andere Lösung...?

Hi,

OK ich werd's versuchen, ohne zu weit auszuschweifen...

Also ich habe einen (einfachen) Quiz programmiert, der grundsätzlich nach meinen Vorschlägen läuft. Nun kommt jedoch dazu, dass mehrere Benutzer den gleichen Quiz verwenden möchten und ich das Skript umbasteln muss.

Grundsätzlich schreibe ich die Antworten in eine Tabelle Namens "statistik" mit folgender Struktur:
Code:
CREATE TABLE IF NOT EXISTS `statistik` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `fragen_id` int(11) NOT NULL,
  `antworten_id` int(11) DEFAULT NULL,
  `r_f` tinyint(1) DEFAULT '0',
  `user_id` int(11) NOT NULL DEFAULT '1',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2238 ;
Also sprich jede Antwort ergibt einen Zeileneintrag, wie zBsp. die ersten 3 Datensätze:
Code:
INSERT INTO `statistik` (`id`, `fragen_id`, `antworten_id`, `r_f`, `user_id`) VALUES
(1, 41, 52, 1, 1),
(2, 47, 0, 0, 1),
(3, 36, 0, 0, 1);
Als Erklärung:
id=klar
fragen_id=ID der einzelnen Frage (Verknüpfung zur Tabelle fragen)
antwort_id=ID einer Antwortmöglichkeit (Verknüpfung zur Tabelle antworten), falls eine richtige Anwort gegeben wird.
r_f=Richtig oder Falsch, je nach dem 0 oder 1
user_id=ID des angemeldeten Users

Um herauszufinden wie oft die Fragen (per Zufalls) bereits beantwortet wurden, dient diese Abfrage:
Code:
"SELECT 
COUNT( DISTINCT (`id`) ) AS zaehler
FROM `statistik`
WHERE `user_id` =1
GROUP BY `fragen_id`";
Als Ergebnis liefert mir SQL:
Code:
 zaehler
49
9
6
19
6
...u.s.w.
Um aus diesen Werten dann weitere Filter nutzen zu können, benötige ich Informationen wie-
  • welche Frage wurde am Meisten abgefragt?
  • wie oft wurden die Fragen durchschnittlich abgefragt
  • ...eventuell noch weitere Auswertungen

Bis jetzt habe ich einen Summenzähler in der Fragentabelle laufen gehabt, jedoch möchte ich nicht für jeden User eine Spalte anlegen, sondern diese Information(en) aus der statistik-Tabelle holen.

Ich hoffe ich habe alles "halbwegs" verständlich formuliert...?!

DANKE vorb für eure Unterstützung und eure Lösungsansätze!!!
Mit Zitat antworten