CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken |
13.08.2002, 14:32:15
|
Anfänger
|
|
Registriert seit: Jun 2002
Ort: Brandenburg
Alter: 45
Beiträge: 68
|
|
SQL Select Problem
Also ich hab hier 2 Tabellen 'seite' und 'news'. In seite sind Informationen zu einzelnen Seiten gespeichert (wie könnte es auch anders sein :-) ) und News sind eigentlich auch nur Seiten die noch zusätzlich ein paar Extrafelder enthalten. Da jede News auf einer Seite basiert verweist sie mittels id_seite auch auf die id der entsprechenden Seite.
Nun bekomme ich bei einem Select auf die Tabelle 'seite' die Daten aller Seiten - das will ich aber nicht, sondern nur die Daten der Seiten die keine News sind.
Dazu hab ich hier folgendes, was aber leider falsch ist (weil halt nicht die gewünschte Datenmenge rauskommt)...
SELECT t1.id as id, t1.bezeichnung as bezeichnung, t1.id_template as id_template from seite as t1, news as t2 WHERE t1.id<>t2.id_seite ORDER by t1.bezeichnung
Meine Frage ist nun, wie ich die in 'news' verknüpften Seiten bei der Abfrage aus der Tabelle 'seite' unter den Tisch fallen lassen kann??
|
13.08.2002, 15:04:31
|
Member
|
|
Registriert seit: Apr 2002
Beiträge: 821
|
|
Poste mal dein Datenbanklayout mit beispielen und sag uns dann was du auslesen möchtest.
Wie sich das anhört suchst du glaub ich "JOIN"
|
13.08.2002, 16:57:12
|
Anfänger
|
|
Registriert seit: Jun 2002
Ort: Brandenburg
Alter: 45
Beiträge: 68
|
|
Okay, hier die beiden Tabellen mit jeweils ein paar Daten.
Code:
#
# Tabellenstruktur für Tabelle `cms_news`
#
CREATE TABLE cms_news (
id smallint(5) unsigned NOT NULL auto_increment,
id_seite smallint(5) unsigned NOT NULL default '0',
archiv tinyint(3) unsigned NOT NULL default '0',
last_change timestamp(14) NOT NULL,
id_editor smallint(5) unsigned NOT NULL default '0',
einstelldatum timestamp(14) NOT NULL,
author varchar(255) NOT NULL default '',
datum_herausgabe timestamp(14) NOT NULL,
PRIMARY KEY (id)
) TYPE=MyISAM COMMENT='Newsverwaltung';
INSERT INTO cms_news (id, id_seite, archiv, last_change, id_editor, einstelldatum, author, datum_herausgabe) VALUES (1, 45, 0, 20020813144117, 3, 20020717111648, 'xxx', 20020820000000);
INSERT INTO cms_news (id, id_seite, archiv, last_change, id_editor, einstelldatum, author, datum_herausgabe) VALUES (4, 50, 1, 20020813081741, 3, 20020717133840, 'Holger Siegel', 20000429000000);
# --------------------------------------------------------
#
# Tabellenstruktur für Tabelle `cms_seite`
#
CREATE TABLE cms_seite (
id smallint(5) unsigned NOT NULL auto_increment,
bezeichnung varchar(128) NOT NULL default '',
id_template smallint(5) unsigned NOT NULL default '0',
last_change timestamp(14) NOT NULL,
id_editor smallint(5) unsigned NOT NULL default '0',
PRIMARY KEY (id)
) TYPE=MyISAM COMMENT='Seitenverwaltung';
INSERT INTO cms_seite (id, bezeichnung, id_template, last_change, id_editor) VALUES (43, 'Über uns->Rechtliches', 35, 20020813123930, 0);
INSERT INTO cms_seite (id, bezeichnung, id_template, last_change, id_editor) VALUES (45, 'Neue Webseite online', 29, 20020813144117, 0);
INSERT INTO cms_seite (id, bezeichnung, id_template, last_change, id_editor) VALUES (52, 'Über uns->Startseite', 29, 20020813124150, 0);
INSERT INTO cms_seite (id, bezeichnung, id_template, last_change, id_editor) VALUES (48, 'Über uns->Aktuelle News Übersicht', 36, 20020813123826, 0);
INSERT INTO cms_seite (id, bezeichnung, id_template, last_change, id_editor) VALUES (49, 'Über uns->Archiv - News', 36, 20020813123542, 0);
INSERT INTO cms_seite (id, bezeichnung, id_template, last_change, id_editor) VALUES (50, ' überträgt PREMIERE WORLD', 29, 20020813144601, 0);
Für eine Übersicht brauche ich nun von allen Seiten die nicht als News verwendet werden die id und bezeichnung. Also von den Beispieldaten ausgehend die Seiten mit id: 43, 52, 48 und 49.
|
13.08.2002, 18:37:06
|
|
Ich mache sowas immer über eine Schleife da mir das mit den verknüpften Abfragen zuoft einen Knoten in die Gedankengänge macht. Nachfolgend ein kleines Denkbeispiel
Also zuerst: SELECT id_seite FROM news
Dann
$i = 0;
while($array = mysql_fetch_irgendwas()) {
SELECT seitenid FROM seiten WHERE id = $id_seite;
$seitennummern[$i] = @mysql_result()
$i++;
}
Wie Du sicherlich gemerkt hast ist das ein Denkanstoß - kein echter Quelltext ;-)
|
14.08.2002, 07:37:10
|
Anfänger
|
|
Registriert seit: Jun 2002
Ort: Brandenburg
Alter: 45
Beiträge: 68
|
|
? Wenn ich das so richtig sehe würde ich mit Deiner Schleife aber nur die Seiten bekommen die auch News sind, und die will ich ja gerade nicht haben ... egal das könnte ich ja auch sicher umdrehen und dann paßt es NUR habe ich so ja etliche DB Abfragen anstatt einer!
Im Moment schwebt es mir so vor das ich 2 Abfragen mache, einmal alle Seiten und dann die News und beim anzeigen der Seiten schaue ob diese id auch in News enthalten ist und wenn ja dann erfolgt halt keine Anzeige. Wird zwar gehen ist aber nicht so schön als wenn das gleich in einer Select Anweisung drin wäre.
|
14.08.2002, 09:02:44
|
|
Also wie gesagt ich benutz die "Schleifen"-Abfrage andauerend und bisher läuft alles noch recht flott.
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
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.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 08:34:19 Uhr.
|