datensätze effizient auswerten?!

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • datensätze effizient auswerten?!

    hallo miteinander,

    ich habe vor kurzem eine web-umfrage erstellt. pro zeile gibt es eine frage und zu jeder frage jeweils drei radio buttons (ja, nein, keine angabe)

    Jetzt möchte ich die umfrage auf einer separaten php seite gerne auswerten. habe mir gedach wenn ich mit folgendem sql befehl z.b die ja's auslese "SELECT * FROM tblfragen WHERE Frage1 = 'ja'" in ein array schreibe, und mit count das array zähle. wird mir die anzahl "ja" bei frage eins zurück gegeben.

    da es aber 10 fragen sind gäbe das dann 30 SELECT * FROM . . ."-Abfragen. Was mir aber nicht sehr effizient vorkommt?!

    gäbe es eine andere möglichkeit, dies effizienter auzuwickeln? wäre es mit einer for-Schleife möglich?

    besten dank im voraus

    - wigi -

  • #2
    SELECT count(`id`) FROM `tbl` WHERE `frageid` = 123 GROUP BY `antwort`

    zb

    da hättest pro frage nur eine abfrage.. man könnte es noch mehr "groupen"

    Kommentar


    • #3
      okay, vielen dank schon mal für die antwort !

      aber was müsste ich bei 'antwort' hinschreiben ?

      und wie kann ich das dann php weiter verwenden ?

      Grüsse und besten Dank

      Kommentar


      • #4
        hat jemand ne idee? würde ja bei mir dann so aussehen?

        SELECT count(`ID`) FROM `tblfragen` WHERE `Frage1` = 'ja' GROUP BY `??`

        würde ja heissen ich brauche für jede frage trotzdem 3 abfragen?

        Grüsse wigi

        Kommentar


        • #5
          wie ist deine Tabellenstruktur?

          Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

          bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
          Wie man Fragen richtig stellt

          Kommentar


          • #6
            Leider nicht sehr professionell :-( aber kann es leider nicht mehr ändern.

            Code:
            +------+------+----------+----------+----------+----------+
            |  ID  |  IP  |  Frage1  |  Frage2  |  Frage3  |  Frage4  |
            +------+------+----------+----------+----------+----------+
            |   1  |195...|    ja    |    ja    |   nein   |    ja    |
            +------+------+----------+----------+----------+----------+
            |   2  |195...|   nein   |   nein   |    ja    |   nein   |
            +------+------+----------+----------+----------+----------+
            Gruss wigi

            Kommentar


            • #7
              PHP-Code:
              $row mysql_fetch_assoc(mysql_query('SELECT COUNT(*) anz FROM tabelle');
              $gesamt $row['anz'];
              for (
              $i 1$i <= 4; ++$i) {
                
              $row mysql_fetch_assoc(mysql_query('SELECT COUNT(*) anz FROM tabelle WHERE frage' $i ' = "ja"'));
                
              $ja $row['anz'];
                
              $row mysql_fetch_assoc(mysql_query('SELECT COUNT(*) anz FROM tabelle WHERE frage' $i ' = ""'));
                
              $keine_angabe $row['anz'];
                
              $nein $gesamt $ja $keine_angabe;

                echo 
              'Von ' $gesamt ' haben bei Frage ' $i ' ' $ja 
                  
              ' Leute mit "Ja" geantwortet, ' $nein ' mit "Nein" und ' 
                  
              $keine_angabe ' Leute haben keine Angabe gemacht<br />' "\n";

              Ist aber vollkommen dumm, bei vielen Datensätzen und vielen Skriptaufrufen ist das der perfekte Overkill für jeden Webserver ... ändere die Datenbank-Struktur!

              Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

              bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
              Wie man Fragen richtig stellt

              Kommentar


              • #8
                danke für die antwort !

                wie würdest du denn das designen? bin leider in diesem gebiet nicht soooo bewandert?

                Kommentar


                • #9
                  Code:
                  -- MySQL dump 10.10
                  --
                  -- Host: localhost    Database: test
                  -- ------------------------------------------------------
                  -- Server version	5.0.15
                  
                  /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
                  /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
                  /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
                  /*!40101 SET NAMES utf8 */;
                  /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
                  /*!40103 SET TIME_ZONE='+00:00' */;
                  /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
                  /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
                  /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
                  /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
                  
                  --
                  -- Table structure for table `antworten`
                  --
                  
                  DROP TABLE IF EXISTS `antworten`;
                  CREATE TABLE `antworten` (
                    `id` int(11) NOT NULL auto_increment,
                    `fragen_id` int(11) NOT NULL,
                    `ip` char(15) collate latin1_general_ci NOT NULL,
                    `antwort` enum('ja','nein','') collate latin1_general_ci NOT NULL,
                    PRIMARY KEY  (`id`),
                    KEY `fragen_id` (`fragen_id`)
                  ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
                  
                  --
                  -- Dumping data for table `antworten`
                  --
                  
                  
                  /*!40000 ALTER TABLE `antworten` DISABLE KEYS */;
                  LOCK TABLES `antworten` WRITE;
                  INSERT INTO `antworten` VALUES (1,1,'195','ja'),(2,2,'195','nein'),(3,1,'182',''),(4,1,'142','');
                  UNLOCK TABLES;
                  /*!40000 ALTER TABLE `antworten` ENABLE KEYS */;
                  
                  --
                  -- Table structure for table `fragen`
                  --
                  
                  DROP TABLE IF EXISTS `fragen`;
                  CREATE TABLE `fragen` (
                    `id` int(11) NOT NULL auto_increment,
                    `Frage` varchar(255) collate latin1_general_ci NOT NULL,
                    PRIMARY KEY  (`id`)
                  ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
                  
                  --
                  -- Dumping data for table `fragen`
                  --
                  
                  
                  /*!40000 ALTER TABLE `fragen` DISABLE KEYS */;
                  LOCK TABLES `fragen` WRITE;
                  INSERT INTO `fragen` VALUES (1,'bla'),(2,'blubb');
                  UNLOCK TABLES;
                  /*!40000 ALTER TABLE `fragen` ENABLE KEYS */;
                  /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
                  
                  /*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
                  /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
                  /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
                  /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
                  /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
                  /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
                  /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

                  Für eine Frage
                  Code:
                  SELECT antwort, COUNT(*) FROM antworten WHERE fragen_id = 1 GROUP BY antwort
                  Für alle Fragen
                  Code:
                  SELECT fragen_id, antwort, COUNT(*) FROM antworten GROUP BY antwort ORDER BY fragen_id

                  Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                  bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                  Wie man Fragen richtig stellt

                  Kommentar


                  • #10
                    Vielen Dank für die Hilfe, werde das morgen mal so versuchen.

                    Noch einen schönen abend.

                    grüsse wigi

                    Kommentar

                    Lädt...
                    X