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.729
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

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni

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


 

Aktuelle PHP Scripte

EJS TreeGrid ansehen EJS TreeGrid

EJS TreeGrid is DHTML component written in pure JavaScript to display and edit data in table, grid, tree view or grid with tree on HTML page

09.04.2019 coqsoft@ | Kategorie: JAVASCRIPT/ Components
Suchmaschine redaktionell, Branchenportal zum Geld verdienen

Programmbeschreibung Die Bezahl-Suchmaschine ist in Perl und PHP programmiert (eigenes CGI-Verzeichnis notwendig), benötigt PHP aber keine MySQL-Datenbank. Webmaster haben mit dieser Suchmaschine neben der normalen kostenlosen Registrierung von Lin

06.04.2019 skripte@ | Kategorie: PHP/ Suchmaschinen
Oog Photo-Video-Gallery

Mit Oog Photo-Gallery können Sie einfach und stilvoll Bilder (auch Video & Audio) auf Ihrem PHP5-Webserver veröffentlichen und verwalten. Lizenz: GNU GPL v2

06.04.2019 trottbrand@ | Kategorie: PHP/ Bilder
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 10:20 Uhr.