php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 13-02-2008, 15:53
toppas
 Registrierter Benutzer
Links : Onlinestatus : toppas ist offline
Registriert seit: Dec 2007
Beiträge: 11
toppas ist zur Zeit noch ein unbeschriebenes Blatt
Standard Mehrere Tabellen abfragen mysql5

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
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
.idb.path 
Hier der Tabellenaufbau

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 ;
Mit Zitat antworten
  #2 (permalink)  
Alt 13-02-2008, 16:14
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

PHP-Code:
FROM articles a,
subarticles b 
gruß
peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #3 (permalink)  
Alt 13-02-2008, 16:25
toppas
 Registrierter Benutzer
Links : Onlinestatus : toppas ist offline
Registriert seit: Dec 2007
Beiträge: 11
toppas ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Das ändert aber nichts am ergebnis! Oder raff ich da grad was nicht
Mit Zitat antworten
  #4 (permalink)  
Alt 13-02-2008, 17:09
H2O
 PHP Junior
Links : Onlinestatus : H2O ist offline
Registriert seit: Jul 2007
Beiträge: 937
H2O ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Es gehört natürlich nichts, das in der zweiten tabelle vorkommt zuerst ein mal in die erste Tabelle. also schmeiss das raus, dann sollte auch deine Abfrage funktionieren. Ich würde sie allerdings so formulieren:
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,
INNER JOIN
    subarticles 
AS b ON a.id b.reference
WHERE 
    DATE
(a.dateBETWEEN '$newStartDate' AND  '$newEndDate'
ORDER BY 
    a
.id
    
b.path 
__________________
Gruss
H2O
Mit Zitat antworten
  #5 (permalink)  
Alt 13-02-2008, 17:19
Abraxax
  THE REAL HAXE (Administrator)
Links : Onlinestatus : Abraxax ist offline
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.623
Abraxax befindet sich auf einem aufstrebenden Ast
Standard

@toppas
du wirst seitens mysql keine 1:1 ausgabe erhalten, wie du sie willst. den rest, also die filterung, musst du immer noch in php machen.
__________________
INFO: Erst suchen, dann posten! | MANUAL(s): PHP | MySQL | HTML/JS/CSS | NICE: GNOME Do | TESTS: Gästebuch | IM: Jabber.org |


Mit Zitat antworten
  #6 (permalink)  
Alt 13-02-2008, 17:26
toppas
 Registrierter Benutzer
Links : Onlinestatus : toppas ist offline
Registriert seit: Dec 2007
Beiträge: 11
toppas ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Danke euch. Das alles über PHP zu filtern hab ich eigentlich nicht vor, da ja doch einiges an überflüssigem mit abgefragt wird. Dann ist es wohl am besten ich überarbeite nochmal den DB-Aufbau, damit ich das dann gescheit abfragen kann.
Mit Zitat antworten
  #7 (permalink)  
Alt 13-02-2008, 17:30
Abraxax
  THE REAL HAXE (Administrator)
Links : Onlinestatus : Abraxax ist offline
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.623
Abraxax befindet sich auf einem aufstrebenden Ast
Standard

cool ... man passt das db-design an seine queries an ... habe ich noch nie erlebt ...
__________________
INFO: Erst suchen, dann posten! | MANUAL(s): PHP | MySQL | HTML/JS/CSS | NICE: GNOME Do | TESTS: Gästebuch | IM: Jabber.org |


Mit Zitat antworten
  #8 (permalink)  
Alt 13-02-2008, 17:50
toppas
 Registrierter Benutzer
Links : Onlinestatus : toppas ist offline
Registriert seit: Dec 2007
Beiträge: 11
toppas ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Jopp - ich will an dem query nichts - aber auch gar nichts verändern daher bleibt mir nur die db zu ändern

Es ist so wie h20 gesagt hat - in der 1. Tabelle steht auch Zeug das in der 2. mit drin steht - muss ja nicht sein
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 01:15 Uhr.