Ich häng grad an ner sql abfrage und komm einfach nicht weiter.
Hoffentlich ist das einigermaßen verständlich erklärt von mir.
Es sind 2 Tabellen, aus denen daten ausgelesen werden sollen um die in eine XML-Datei auszugeben.
Die erste Tabelle enthält Metadaten zu Artikeln (erstellungsdatum, autor usw.) und die Überschrift und den ersten Artikeltext.
Dann gibt es eine 2. Tabelle in der Subartikel stehen. Die Tabelle enthält die gleichen Spalten + die Referenz auf den Hauptartikel.
Wie bring ich es nun hin, das mir zum Hauptartikel die jeweiligen Unterartikel ausgegeben (die Zeile aus dem Hauptartikel also 1x und Unterartikel nx)
Left Join, Right Join hat mir bisher immer nur zum gleichen Resultat geführt und ich bin jetzt nicht sicher ob das ein Fehler beim Aufbau der DB ist?
Ist-Zustand:
Hauptartikel - Unterartikel
Hauptartikel - Unterartikel
Hauptartikel - Unterartikel
Soll Zustand:
Hauptartikel - Unterartikel
Unterartikel
Unterartikel
Hier die Abfrage dazu
Hier der Tabellenaufbau
Hoffentlich ist das einigermaßen verständlich erklärt von mir.
Es sind 2 Tabellen, aus denen daten ausgelesen werden sollen um die in eine XML-Datei auszugeben.
Die erste Tabelle enthält Metadaten zu Artikeln (erstellungsdatum, autor usw.) und die Überschrift und den ersten Artikeltext.
Dann gibt es eine 2. Tabelle in der Subartikel stehen. Die Tabelle enthält die gleichen Spalten + die Referenz auf den Hauptartikel.
Wie bring ich es nun hin, das mir zum Hauptartikel die jeweiligen Unterartikel ausgegeben (die Zeile aus dem Hauptartikel also 1x und Unterartikel nx)
Left Join, Right Join hat mir bisher immer nur zum gleichen Resultat geführt und ich bin jetzt nicht sicher ob das ein Fehler beim Aufbau der DB ist?
Ist-Zustand:
Hauptartikel - Unterartikel
Hauptartikel - Unterartikel
Hauptartikel - Unterartikel
Soll Zustand:
Hauptartikel - Unterartikel
Unterartikel
Unterartikel
Hier die Abfrage dazu
PHP-Code:
SELECT a.header AS mainheader,
a.text AS maintext,
a.creation_date AS crdate,
a.author AS author,
a.last_updated AS lastupdate,
b.header AS subheader
FROM articles AS a,
subarticles AS b
WHERE date(a.date) >= '$newStartDate'
AND date(a.date) <= '$newEndDate'
AND a.id = b.reference
ORDER BY a.id, b.path
Code:
CREATE TABLE `articles` ( `id` mediumint(8) unsigned NOT NULL auto_increment, `path` varchar(255) collate utf8_unicode_ci NOT NULL default '', `creation_date` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, `date` datetime NOT NULL default '0000-00-00 00:00:00', `thema_type` varchar(255) collate utf8_unicode_ci NOT NULL default '', `header` varchar(255) collate utf8_unicode_ci NOT NULL default '', `text` text collate utf8_unicode_ci NOT NULL, `author` varchar(255) collate utf8_unicode_ci NOT NULL default '', `last_updated` timestamp NOT NULL default '0000-00-00 00:00:00', `comment` varchar(255) collate utf8_unicode_ci default NULL, PRIMARY KEY (`id`), UNIQUE KEY `path` (`path`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=13 ; CREATE TABLE `subarticles` ( `id` mediumint(8) unsigned NOT NULL auto_increment, `reference` mediumint(8) unsigned NOT NULL default '0', `path` varchar(255) collate utf8_unicode_ci NOT NULL default '', `creation_date` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, `date` timestamp NOT NULL default '0000-00-00 00:00:00', `thema_type` varchar(255) collate utf8_unicode_ci NOT NULL default '', `header` varchar(255) collate utf8_unicode_ci NOT NULL default '', `text` text collate utf8_unicode_ci NOT NULL, `last_updated` timestamp NOT NULL default '0000-00-00 00:00:00', `comment` varchar(255) collate utf8_unicode_ci default NULL, PRIMARY KEY (`id`), UNIQUE KEY `path` (`path`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=22 ;
Kommentar