PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   MySQLi/PDO/(MySQL) (http://www.selfphp.de/forum/forumdisplay.php?f=22)
-   -   Subquery od. andere Lösung...? (http://www.selfphp.de/forum/showthread.php?t=25934)

xandlsoft 01.10.2016 23:08:14

Subquery od. andere Lösung...?
 
Hallo @all,

ich versuche folgende Aufgabe zu lösen:

Durch folgende Abfrage erhalte ich für ein Quiz-Programm folgende Daten-
"SELECT COUNT(DISTINCT(`id`)) FROM `statistik` WHERE `user_id` =1 group by `fragen_id`";

COUNT(DISTINCT(`id`))
49
9
6
19

Wie schaffe ich nun aus diesen Werten das Maximum zu bestimmen?
Ich steh wohl voll auf der Leitung...:-(

DANKE vorab und liebe Grüße,
xs

vt1816 02.10.2016 19:10:57

AW: Subquery od. andere Lösung...?
 
Hallo und willkommen hier im Forum.

Wie wäre es mit der Struktur der Datenbanktabelle und ein paar aussagekräftigen Datensätzen als Beispiel. Dann lässt sich schneller helfen und man versteht das Problem besser.

Vorschlag:
PHP-Code:

"SELECT fragen_id, COUNT(DISTINCT(`id`)) AS zaehler 
 FROM `statistik` 
 WHERE `user_id` = 1 
 GROUP BY `fragen_id` 
 ORDER BY zaehler DESC 
 LIMIT 1;" 


xandlsoft 02.10.2016 21:20:45

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!!!

vt1816 02.10.2016 23:02:42

AW: Subquery od. andere Lösung...?
 
Danke, so ist es verständlicher.

Zitat:

Zitat von xandlsoft (Beitrag 148855)
[..]

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

Hast Du Dir mal meinen o.g. Vorschlag dazu angesehen - sollte den ersten Punkt beantworten..

xandlsoft 03.10.2016 21:15:48

AW: Subquery od. andere Lösung...?
 
Zitat:

Zitat von vt1816 (Beitrag 148856)
Danke, so ist es verständlicher.


Hast Du Dir mal meinen o.g. Vorschlag dazu angesehen - sollte den ersten Punkt beantworten..

Was soll ich sagen? ***GEnIaL***

Vielen Dank!
Ich war wohl mit meinen MAX/MIN/AVG/COUNT/SUM Operatoren so verblendet, dass ich diesen Lösungsansatz überhaupt nicht verfolgte.

Vielen Dank, mir wurde geholfen ;-)
Juchuhh, mein Projekt läuft!

DANKE an vt1816!

vt1816 03.10.2016 21:53:54

AW: Subquery od. andere Lösung...?
 
Vielen Dank für die Blumen.

Solltest Du weitere Fragen/Probleme haben, weißt Du ja jetzt wo Du Hilfe erhalten kannst.


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:06:58 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.