-
01-09-2004, 02:29 #16Approved 9-lifer
- Registered
- 17/08/02
- Location
- Gent
- Posts
- 1,402
- iTrader
- 31 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 0/0
Zet eens het volgende achter uw sql-query:
Dan zie je direct waar de fout zit in je query.PHP Code:$result=mysql_db_query($database,$sql,$db) or die(mysql_error());
En btw, nu ik eens vluchtig naar uw query kijk:
Moet "FROM nieuws AS n nieuws_reac AS nr" niet "FROM nieuws n, nieuws_reac nr" zijn?Sir, we are surrounded! Excellent, we can attack in any direction.
no votes
-
-
01-09-2004, 02:32 #17Member
- Registered
- 18/11/02
- Location
- Eke, België
- Posts
- 2,448
- iTrader
- 0
- Mentioned
- 0 Post(s)
- Reputation
- 0/0
Jama zeg, en dervoor schrijft ge het wel met een komma
no votes
-
01-09-2004, 11:01 #18
Hier zat de fout:
nr.nieuws_reac
table.table is nogal stom. Dus heb ik het veranderd in nr.numba (elke table heeft die numba rij bij mij)
Maar de query zoals hij nu opgebouwd geeft wel een resultaat maar niet het resultaat dat ik wens.
Van de ene table nieuws zou ik van de laatste 20 rijen de velden titel, bericht, poster, datum en numba opvragen.
En dan voor elke bericht van nieuws het aantal rijen opvragen waarin het veld numba_in van table nieuws_reac gelijk is aan de numba van het bericht uit nieuws.
merci al voor de hulpmouseover.be~Arty, Farty, Techy, Dailyno votes
-
01-09-2004, 11:13 #19Member
- Registered
- 06/09/02
- Location
- Oudenaarde
- Posts
- 125
- iTrader
- 0
- Mentioned
- 0 Post(s)
- Reputation
- 0/0
Dit is basiskenis SQL, ik raad u aan om ergens een basiscursus SQL op de kop te tikken, dat zal u al veel kopzorgen besparen. Ik vermoed dan ook dat uw database layout ook niet echt geoptimaliseerd zal zijn. Weet dat de eerste stap om een scrip vlot te laten werken een snelle en goed geïndexeerde databaselayout + zo weinig mogelijk query's vraagt !!en waarom die for lus, omdat ik toen het bestaan nog niet wist van die LIMIT 20
draai uw query eens in phpmyadmin dan krijgt ge direct wat extra info waar ongeveer uw query fout zit.
ik vermoed dat er ergens een kolomnaam verkeerd staat of zo
Gebruik voor de LIMIT de juistere syntax: LIMIT 0,20 (start op 0 en toon 20 records) ik weet het de 2 werken maar dit is duidelijker
en leer werken met INNER JOIN:
PHP Code:SELECT
n.numba,
n.titel,
n.bericht,
n.poster,
n.datum,
nr.numba_in,
nr.nieuws_reac
FROM
nieuws n
INNER JOIN nieuws_reac nr ON (n.numba = nr.numba_in)
ORDER BY
n.numba DESC
LIMIT 0,20
- the artist is living in the mirror whit the echoes of himself -
- www.serial-graphics.be/sg2 -no votes
-
01-09-2004, 12:21 #20Member
- Registered
- 18/11/02
- Location
- Eke, België
- Posts
- 2,448
- iTrader
- 0
- Mentioned
- 0 Post(s)
- Reputation
- 0/0
Enneuh, eigenlijk is LEFT JOIN toch beter geschikt, want nu worden de nieuwsberichten die geen commentaar hebben niet afgebeeld.
no votes
-
01-09-2004, 12:30 #21Member
- Registered
- 12/10/02
- Location
- mars
- Posts
- 14,319
- iTrader
- 2 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 0/0
das in mysql ook niet nodig bij collumn names bij mijn weten. (of toch niet van een bep. versie)
aan zero2one zijn sql-code is de join wel fout, je voegt hier nl. geen tabellen samen, maar je voegt de data uit de comments-tabel toe aan de nieuws-tabel: LEFT JOIN dus
.
no votes
-
01-09-2004, 14:23 #22Member
- Registered
- 06/09/02
- Location
- Oudenaarde
- Posts
- 125
- iTrader
- 0
- Mentioned
- 0 Post(s)
- Reputation
- 0/0
en ge hebt gelijk, effe over hoofd gezienLEFT JOIN dus
.

en als LP dan zijn code goed schrijft heeft hem maar 1 query nodig ipv 20:
PHP Code:SELECT
count(nr.numba) AS aantal_reacties,
n.numba,
n.titel,
n.bericht,
n.poster,
n.datum
FROM
nieuws n
LEFT JOIN nieuws_reac nr ON (n.numba = nr.numba_in)
GROUP BY n.numba
ORDER BY
n.numba DESC
LIMIT 0,20
Last edited by zero2one; 01-09-2004 at 14:25.
- the artist is living in the mirror whit the echoes of himself -
- www.serial-graphics.be/sg2 -no votes
