SQL Statement funzt nicht

Dieses Thema im Forum "Webentwicklung" wurde erstellt von badloader, 30. November 2007 .

Schlagworte:
  1. 30. November 2007
    Hi,

    das Problem liegt glaub ich an dem COUNT, da nur die Artikel angezeigt werden, welche auch einen Kommentar haben.

    Ziel meiner Abfrage ist alle Artikel zu holen und dazu eine Angabe über Kathegorie und Kommentare zu geben. So wie es immer bei Blogs ist

    Erstmal die Abfrage:
    Code:
    SELECT
     ca.title AS category,
     ar.*,
     DATE(ar.date) AS date,
     COUNT(*) AS comments
    FROM
     articles AS ar,
     categories AS ca,
     comments AS co
    WHERE
     ca.url_title = 'frameworks'
    AND
     ar.category_id = ca.id
    AND
     co.article_id = ar.id
    GROUP BY
     co.article_id
    ORDER BY
     date DESC;
    Die dazugehörigen Tabellen:

    Code:
    CREATE TABLE `articles` (
     `id` int(11) NOT NULL auto_increment,
     `text` text collate latin1_general_ci NOT NULL,
     `title` varchar(112) collate latin1_general_ci NOT NULL,
     `url_title` varchar(112) collate latin1_general_ci NOT NULL,
     `author` varchar(112) collate latin1_general_ci NOT NULL,
     `date` datetime NOT NULL,
     `category_id` int(11) NOT NULL,
     PRIMARY KEY (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=11 ;
    
    CREATE TABLE `categories` (
     `id` int(11) NOT NULL auto_increment,
     `title` varchar(112) collate latin1_general_ci NOT NULL,
     `url_title` varchar(112) collate latin1_general_ci NOT NULL,
     `parent_id` int(11) NOT NULL,
     PRIMARY KEY (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=10 ;
    
    CREATE TABLE `comments` (
     `id` int(11) NOT NULL auto_increment,
     `name` varchar(112) collate latin1_general_ci NOT NULL,
     `text` text collate latin1_general_ci NOT NULL,
     `ip` varchar(112) collate latin1_general_ci NOT NULL,
     `article_id` int(11) NOT NULL,
     `date` varchar(112) collate latin1_general_ci NOT NULL,
     PRIMARY KEY (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=4 ;
    
    
     
  2. 30. November 2007
    AW: SQL Statement funzt nicht

    Also bevor ich selbst anfange deine Arbeit zu rekonstruieren, würde ich doch gerne bitten, erstmal den Fehler zu zitieren und zu benennen!?
     
  3. 1. Dezember 2007
    AW: SQL Statement funzt nicht

    Es gibt keinen direkten Fehler.

    Was nicht funktioniert ist, dass mit diesem Statement nur Artikel ausgegeben werden, die einen Kommentar haben. Alle anderen Artikel werden nicht ausgegeben.

    Das ist das Problem.

    Ich glaube, dass der interpreter das COUNT(*) irgendwie als false wiedergibt, wenn keine Artikel vorhanden sind und somit bei einem Artikel ohne Kommentar abgebrochen wird
     
  4. 1. Dezember 2007
    AW: SQL Statement funzt nicht

    Zieh dir mal die Tutorials zu den Join-Syntax-Formen rein, die "Punkt-Joins" sind für solche Dinge (Ausschluss, felder leer lassen etc.) nicht so mächtig wie die vollständige Join - Syntax, erste anlaufstelle wäre z.B. MySQL :: MySQL 5.0 Reference Manual :: 13.2.8.2 JOIN Syntax und der LEFT JOIN sollte dir auf jeden Fall schon mal weiterhelfen.
     
  5. 1. Dezember 2007
    AW: SQL Statement funzt nicht

    Okay danke für die Hilfe mal schaun was so bei rauskommt
     
  6. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.