order by - problem.....

bad taste

Erfahrenes Mitglied
also wollte bei einem nwes-archiv-skript eine funktion einbauen, mit der man nach allem möglichen sortieren kann......

das is auch alles ganz einfach, bis auf die reihenfolge der anzahl der comments.....

also das ganze steht in zwei tables (news und news_comments) wobei beide eine spalte news_id haben.....

also mein query sieht bisher so aus:

PHP:
$query = 'select n.header,n.maintext,n.news_id,n.member_id,n.dateline,count(c.news_id) as comments from news as n, news_comments as c where (n.news_id=c.news_id) group by n.news_id order by comments asc';

das problem dabei ist aber, das jetzt nur noch die news-einträge zurückgegeben werden, bei denen es auch comments gibt (also die where-clause n.news_id=c.news_id erfüllt ist).....

kennt jemand ne möglichkeit, das order by so zu gestalten, dass die news ohne comments nicht rausflieben???
 
na die lösung war doch schon so nah :)

du hast doch schon erkannt das die where abfrage ausfiltert wenn du keine filterung möchtes ja denn die where abfrage weglassen :)

oder verstehe ich jetzt was falsch?
 
hm in den programming tutorials müssten 2 sql tutorials von mir sein

stichwort: joins


greetz
q
 
also von wegen einfach weglassen, das geht natürlich net!

denn am anfang wird doch das comments (nach dam am ende sortiert wird) berechnet......
und da ich ja nur die comments von der news zählen will, die ausgegeben wird bracuh ich logischerweise die where clausel.....

thx @ quentin ich schau es mir glecih mal an.....
 
hmm,

naja aber du kannst entweder nur zählen lassen wieviele teile Comments haben oder alle ausgeben lassen, aber beides geht nicht. dann brauchst du zwei abfragen ;)

Du kannst nicht erwarten das der Rechner weiss dass du eigentlich gerne die Summe aller Grünen AMpeln haben willst die du überfahren hast aber dazu auchnoch die Anzahl aller Ampeln also auch derer die Rot zeigten, wie willst du das erklären ?
 
naja computer sind schlau und man kann ihnen viele kompleye sachen erzählen, die sie dann verstehen....
und ich wollte halt wissen, ob man dem computer genau das begreiflich machen kann.....

//bad taste
 
naja computer sind schlau ...

falsch! Computer sind dumm, und man muss ihnen alles sehr detailiert sagen, was sie machen sollen. Das machen sie dann auch sehr schnell, aber eben nicht schlau ;)


Dunsti
 
@quentin

also ich hab mir dein tut mal durchgelesen.....

dann hab ich es mal mit einem inner join probiert......

also der query sieht jetzt so aus:

PHP:
$query = select news.header,news.maintext,news.news_id,news.member_id,news.dateline,count(news_comments.news_id) as comments from news inner join news_comments on news_comments.news_id = news.news_id order by comments asc';

nun hab ich zwar die where-clausel weg, aber der effekt bleibt derselbe, da ich jetzt durch die verknüpfung der beiden tabels mit dem inner join (durch das "news_comments on news_comments.news_id = news.news_id" wieder nur die news bekomme, zu denen es einen comment gibt....
also plz, auch wenn ich es eigendlich selber hinbekommen müsste, wie muss es heisse oder gib mir wenigstens einen tip:)
oder muss ich einen ganz andern join verwenden?!?

thx for help

//bad taste
 
Original geschrieben von Dunsti


falsch! Computer sind dumm, und man muss ihnen alles sehr detailiert sagen, was sie machen sollen. Das machen sie dann auch sehr schnell, aber eben nicht schlau ;)


Dunsti

wahre worte....
so meinte ich das eigendlich auch:)
ich wünschte nur, es wäre ander herum:)
dann wäre unser leben doch vel einfacher
 
naja, kann man auch andersrum sehen:

im Moment sind die Computer noch unsere "Sklaven" ... ich mag nicht dran denken, wie es wäre, wenn Computer wirklich schlau wären :rolleyes:

aber zurück zum Thema: Du wirst wohl nicht um zwei getrennte Anfragen rumkommen, oder: zuerst alles in ein Array einlesen, und dann dieses sortieren. ;)


Dunsti
 

Neue Beiträge

Zurück