SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



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



:: Buchempfehlung ::

Webseiten professionell erstellen

Webseiten professionell erstellen zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > MySQLi/PDO/(MySQL)
Hilfe Community Kalender Heutige Beiträge Suchen

MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 24.06.2004, 18:20:16
Dan Dan ist offline
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.
Mit Zitat antworten
  #2  
Alt 26.06.2004, 11:44:18
Marilu Marilu ist offline
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
Mit Zitat antworten
  #3  
Alt 26.06.2004, 16:54:28
Dan Dan ist offline
Anfänger
 
Registriert seit: Jul 2003
Beiträge: 44
hab ein bisschen rumprobieren müssen, aber dann funktioniert. danke.
Mit Zitat antworten
  #4  
Alt 28.06.2004, 13:45:08
Marilu Marilu ist offline
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 :-)))
Mit Zitat antworten
  #5  
Alt 02.07.2004, 18:23:26
A]n[OLIS A]n[OLIS ist offline
Anfänger
 
Registriert seit: Mar 2004
Beiträge: 9
Yoha

Hau mal rüber würd mich nämlich auch ineressieren!
Mit Zitat antworten
  #6  
Alt 03.07.2004, 15:30:57
A]n[OLIS A]n[OLIS ist offline
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...
Mit Zitat antworten
Antwort


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.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 02:31:00 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt