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!
|
MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren |
24.06.2004, 18:20:16
|
Anfänger
|
|
Registriert seit: Jul 2003
Beiträge: 44
|
|
Nachrichten und Kommentaranzahl auf einmal abfragen
Nachdem auch ich mir ein "Newsskript" gemacht habe, wie man es schon oft gesehen hat, stehe ich nun vor einem komplizierterem Problem.
Zuerst habe ich zwei Tabellen,
eine -news- :
-id-zeit-titel-nachricht-
und eine für kommentare:
-id-newsid-name-kommentar-
Wenn ich jetzt auf der Startseite 5 News anzeigen will läuft das folgendermaßen ab:
Zuerst lasse ich mir die 5 Nachrichten per SELECT aufrufen, und dann für jede Nachricht eine weitere Abfrage, wie viele Kommentare es für die entsprechende Nachricht gibt.
Alles in allem also 6 Abfragen, da dachte ich mir aber, das müsste auch einfacher gehen!
Darum frag ich, ob und wie es möglich wäre, in einer einzigen Abfrage die Nachricht und die Anzahl der zugehörigen Kommentare abzufragen.
Ich bin schon auf die Idee gekommen, der -news-tabelle eine Spalte 'anzahl' hinzuzufügen, aber dann bräuchte ich für die Kommentareintragung eine weitere Eintragung.
-----------------
Nebenbei wollte ich auch fragen, ob es eine Möglichkeit gibt, bei allen Einträgen einer Spalte eine bestimmte Zeichenfolge durch eine andere zu ersetzen.
|
26.06.2004, 11:44:18
|
Member
|
|
Registriert seit: Apr 2003
Ort: 49.54, 8.35 - 3./9
Beiträge: 878
|
|
Versuchs mal so (ungetestet):
SELECT news.*, COUNT(kommentare.newsid) AS Anzahl FROM news
LEFT JOIN kommentare ON news.id = kommentare.newsid
GROUP BY news.id ORDER BY news.id
Eventuell muß Du damit etwas herumspielen --> Doku lesen
|
26.06.2004, 16:54:28
|
Anfänger
|
|
Registriert seit: Jul 2003
Beiträge: 44
|
|
hab ein bisschen rumprobieren müssen, aber dann funktioniert. danke.
|
28.06.2004, 13:45:08
|
Member
|
|
Registriert seit: Apr 2003
Ort: 49.54, 8.35 - 3./9
Beiträge: 878
|
|
> hab ein bisschen rumprobieren müssen, aber dann funktioniert. danke.
Zeig doch mal die genaue Syntax. Ich lerne auch gerne dazu :-)))
|
02.07.2004, 18:23:26
|
Anfänger
|
|
Registriert seit: Mar 2004
Beiträge: 9
|
|
Yoha
Hau mal rüber würd mich nämlich auch ineressieren!
|
03.07.2004, 15:30:57
|
Anfänger
|
|
Registriert seit: Mar 2004
Beiträge: 9
|
|
Mein PÜroblem dazu
Hi,jetzt Zeige ich Euch mal mein Problem:
Ich baue mir z.Z auch ein Newsscript! Es sollen immer 5 News ausgegeben werden! mySQL Befehl dazu -> LIMIT $start, $step
Natürlich hat mein Newsscript auch ne Commentsfunktion.
Nun will ich nicht nur die News aus der Tabelle "news" holen sondern auch die Anzahl der Comments in Tabelle "news_comments" zum passenden Newseintrag mit ausgeben -> mySQL Befehl COUNT()
Ich hab in Erfahrung gebracht das man dazu JOIN's braucht (wenn man was aus zwei Tabellen holt). Nur da gibts so einige joins...
Aber erst mal die DUMP's meiner 2 Tabellen
CREATE TABLE news (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
date_time datetime NOT NULL,
topic varchar(255),
news text,
com_stat char(3),
);
CREATE TABLE news_comments (
id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
news_id INT NOT NULL,
vorname VARCHAR(20),
nachname VARCHAR(20),
email VARCHAR(60),
betreff VARCHAR(255),
comments TEXT,
ip VARCHAR(255),
host VARCHAR(255),
date_time DATETIME NOT NULL
);
Soweit bin ich bis jetzt (funktioniert auch):
$sql1="SELECT *, DATE_FORMAT(date_time, '%d.%m.%Y, %H:%i:%s') as 'datum' FROM news ORDER BY id DESC LIMIT $start,$step";
Probleme:
-Wo wende ich Limit Richtig an? Es sollen aus X Eintragen 5 herausgepickt werden, und die Kommentare gezählt werden! Aber die Limitierung soll natürlich nicht die Zählung der Comments beeinflußen. D.H. es sollen alle Comments gezählt werden, auch wenn mehr als 5 Comments vorhanden sind!
-Wie Wende ich den join richtig an?
Versuch:
SELECT news.*, DATE_FORMAT(date_time, '%d.%m.%Y, %H:%i:%s') as 'datum', COUNT(news_comments.news_id) as anzahlcom FROM news LEFT JOIN news_comments ON news.id=news_comments.news_id GROUP BY news.id ORDER BY news.id DESC LIMIT $start, $step
So muss da jetzt nicht noch eine WHERE KLAUSEL rein, dass da nicht alles miteinader verknüpft wird (wegen Performence).
Das mit LIMIT stimt so sicher auch net...
|
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 02:31:00 Uhr.
|