Ik heb in de query ook DESC staan. Het voorbeeld erna met ASC is alleen om aan te geven dat daar het probleem niet in schuilt.quote:Op dinsdag 10 mei 2016 14:30 schreef Rockfire het volgende:
[..]
Zonder echt naar de query te hebben gekeken: zou het niet ORDER BY msg.date_sent DESC moeten zijn? Je wilt de datum immers aflopend (DESC = descending) in plaats van oplopend (ASC = ascending) hebben...
1 2 | SELECT msg.id, m.login, MAX(msg.date_sent) AS most_recent_message FROM mail_msg msg, members m WHERE msg.user_id = $auth AND ((msg.user_from = $auth AND msg.user_to = m.id) OR (msg.user_to = $auth AND msg.user_from = m.id)) AND m.id != $auth GROUP BY m.id ORDER BY most_recent_message DESC |
Volgens mij doet ie het nu perfect! Thanks!!quote:Op dinsdag 10 mei 2016 14:35 schreef Monolith het volgende:
Het lijkt me dat het aan je group by ligt. Volgens mij moet het zoiets zijn:
[ code verwijderd ]
SPOILEROm spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.Als het een match is doordat de opgegeven parameter(?) voorkomt in de credentials.username moet er niks worden opgehaald voor de keywords.keyword kolom. Heeft iemand een idee hoe ik dit voor elkaar krijg?No citizen has a right to be an amateur in the matter of physical training...what a disgrace it is for a man to grow old without ever seeing the beauty and strength of which his body is capable.
Dan zou ik na het uitvoeren van de query nog een stuk logica moeten schrijven om te kijken of de data opgehaald is gebruikmakende van de keywords of niet en dan de opgehaalde keywords niet te gebruiken. Alleen denk ik dat het netter en sneller zou zijn om die selectie op dbms niveau te doen dan na het ophalen nog eens een selectie uit te voeren in mijn software. (Bedankt voor het meedenken alvast!)quote:Op maandag 16 mei 2016 22:17 schreef KomtTijd... het volgende:
Je kunt dat veld dan toch gewoon niet gebruiken
quote:Op maandag 16 mei 2016 21:44 schreef esv7 het volgende:
Hopende in het juiste topic te zijn heb ik de volgende vraag:
Ik heb een query waarbij ik data ophaal uit twee tabellen gebruikmakende van een JOIN, echter wil ik bij bepaalde situaties niks ophalen uit een kolom. De query ziet er als volgt uit:Zo uit m'n hoofd kun je gewoon een if statement in je group concat zetten, al krijg je dan wellicht wel wat onnodige whitespaces:SPOILEROm spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.Als het een match is doordat de opgegeven parameter(?) voorkomt in de credentials.username moet er niks worden opgehaald voor de keywords.keyword kolom. Heeft iemand een idee hoe ik dit voor elkaar krijg?
1
2
3
4
5
6
7
8
9
10SELECT DISTINCT credentials.id, credentials.username, credentials.password
GROUP_CONCAT(if((UPPER(credentials.keyword) LIKE UPPER(?),keywords.keyword,'') SEPARATOR ' ')
FROM credentials
JOIN keywords
ON credentials.id = keywords.credentials_id
WHERE (UPPER(credentials.keyword) LIKE UPPER(?)
OR UPPER(credentials.username) LIKE UPPER(?))
AND CHAR_LENGTH(?) > 0
GROUP BY credentials.id
ORDER BY credentials.matches;
Het is sowieso wel een beetje een rommelige query en ik vraag me ook af wat je exact probeert te bereiken, functioneel gezien.
De DISTINCT op credentials.id is sowieso overbodig aangezien je er al een GROUP BY op doet.Volkorenbrood: "Geen quotes meer in jullie sigs gaarne."
Het distinct keyword ben ik inderdaad vergeten te verwijderen nadat ik de GROUP BY clausule toegevoegd heb.quote:Op dinsdag 17 mei 2016 10:22 schreef Monolith het volgende:
[..]
Zo uit m'n hoofd kun je gewoon een if statement in je group concat zetten, al krijg je dan wellicht wel wat onnodige whitespaces:
[ code verwijderd ]
Het is sowieso wel een beetje een rommelige query en ik vraag me ook af wat je exact probeert te bereiken, functioneel gezien.
De DISTINCT op credentials.id is sowieso overbodig aangezien je er al een GROUP BY op doet.
1 2 3 4 | $db = JFactory::getDBO(); $db->setQuery("SELECT SUM((`FieldValue`)) FROM popkoor_rsform_submission_values WHERE `FieldName`='Totaal' AND `FormId`='3'"); $directoryLayout.=" Aantal verkocht: " . "$" . $db->loadResult() . "<br/>"; |
Dat leek me heel logisch, maar helaas werkt het niet. Ik krijg de foutmelding"1054quote:
1 2 3 4 | $db = JFactory::getDBO(); $db->setQuery("SELECT SUM((`FieldValue`)) FROM popkoor_rsform_submission_values WHERE `FieldName`='Totaal' AND `_STATUS` = 1 AND `FormId`='3'"); $directoryLayout.=" Aantal verkocht: " . "$" . $db->loadResult() . "<br/>"; |
Ja, ik had het daar ook al uitgeprobeerd.quote:Je weet trouwens dat je in Phpmyadmin gewoon een zoekactie kunt doen en de query kunt kopiėren?
Dat werkt natuurlijk niet. Status is geen kolom in de tabel, maar een aparte rij.quote:Op vrijdag 20 mei 2016 20:07 schreef KomtTijd... het volgende:
AND `_STATUS` = 1
Je weet trouwens dat je in Phpmyadmin gewoon een zoekactie kunt doen en de query kunt kopiėren?
1 | SELECT SUM((p1.`FieldValue`)) FROM popkoor_rsform_submission_values p1 WHERE p1.`FieldName`='Totaal' AND p1.`FormId`='3' AND EXISTS (SELECT * FROM popkoor_rsform_submission_values p2 WHERE p2.`FieldName`='_Status' AND p2.`FieldValue` = "1" AND p1.SubmissionId = p2.SubmissionId) |
1 2 3 4 5 6 7 | SELECT SUM(t1.fieldvalue) FROM popkoor_rsform_submission_values AS t1 JOIN popkoor_rsform_submission_values as t2 ON t1.submissionid = t2.submissionid WHERE t1.fieldname = "totaal" AND t2.fieldname = "_STATUS" AND t2.fieldvalue = 1 |
Ik denk dat het probleem in PHP wordt veroorzaakt omdat je dubbele quotes om de 1 hebt staan.quote:Op zaterdag 21 mei 2016 13:56 schreef Wedden het volgende:
[..]
Allen dank voor het meedenken!
Het werkt nog niet helemaal. Als ik deze code van Monolith gebruik, lukt het wel in phpMyAdmin.
Zie plaatje
[ afbeelding ]
Als die code plak in de code waar ik mee begon krijg ik:
[ code verwijderd ]
Dan ziet de webpagina er echter zo uit:
[ afbeelding ]
Wordt nog even puzzelen waar het mis gaat!
Jullie zijn helden! Bedankt!quote:Op zaterdag 21 mei 2016 14:04 schreef Tijn het volgende:
[..]
Ik denk dat het probleem in PHP wordt veroorzaakt omdat je dubbele quotes om de 1 hebt staan.
Gezien de staat van 'vanilla PHP' zou ik eigenlijk voor elk serieus project een framework gebruiken. Wil je een simpel scriptje bouwen, dan is het wellicht overkill, maar een beetje applicatie ontwikkelen gaat tien keer sneller met een fatsoenlijk framework, al is er vaak wel een initiėle leercurve.quote:Op woensdag 25 mei 2016 12:55 schreef JortK het volgende:
Hoeveel mensen van jullie gebruiken trouwens een framework als bijvoorbeeld Laravel?
Ik ben er nu een aantal maal een project mee gestart, maar de overheid die het met zich meebrengt zorgt er eigenlijk altijd voor dat ik al snel overstap naar een project zonder framework.
Ik gebruik tegenwoordig altijd een framework. Meestal Laravel, lumen of silex.quote:Op woensdag 25 mei 2016 12:55 schreef JortK het volgende:
Hoeveel mensen van jullie gebruiken trouwens een framework als bijvoorbeeld Laravel?
Ik ben er nu een aantal maal een project mee gestart, maar de overheid die het met zich meebrengt zorgt er eigenlijk altijd voor dat ik al snel overstap naar een project zonder framework.
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |