Aanpassing in bestaande query geeft geen resultaat
De query die ik nu heb is:
Quote:
SELECT destination FROM $tabelnaamX0 GROUP BY destination HAVING count(destination) = (SELECT count(destination) AS great FROM $tabelnaamX0 GROUP BY destination ORDER BY great DESC LIMIT 1)
Om de query specifieker te maken denk ik dat ik het volgende stukje ergens moet toevoegen:
WHERE source LIKE '$telnr%'
Hierdoor zou ik alleen nog maar de sources krijgen die beginnen met wat is opgegeven in de variabele telnr (die waarde kan bijvoorbeeld zijn 316).
Nou heb ik al geprobeerd om deze WHERE op meerder plaatsen toe te voegen maar helaas krijg ik dan geen resultaat meer. Iemand enig idee waar dit aan kan liggen?
Toevoeging op 07/06/2016 19:08:55:
Ik heb nog wat getest met andere query's en de volgende query werkt wel:
Quote:
SELECT source FROM $tabelnaamX0 GROUP BY source HAVING count(source) = (SELECT count(source) AS great FROM $tabelnaamX0 WHERE source LIKE '$telnr%' GROUP BY source ORDER BY great DESC LIMIT 1)
Maar deze query werkt niet:
Quote:
SELECT destination FROM $tabelnaamX0 GROUP BY destination HAVING count(destination) = (SELECT count(destination) AS great FROM $tabelnaamX0 WHERE source LIKE '$telnr%' GROUP BY destination ORDER BY great DESC LIMIT 1)
Gewijzigd op 07/06/2016 19:08:44 door James C
@james, als je zegt hij doet het niet, bedoel je dan: ik krijg niet het gewenste/verwachte resultaat of ik krijg een error?
Nee ik krijg geen error, het resultaat is leeg, ook als ik de query direct in phpmyadmin uitvoer.
Wat ik niet begrijp is dat je hier een subquery voor gebruikt?
Als ik het goed begrijp wil je in oorspronkelijke query de destination hebben die het meest voorkomt? Dit kan toch ook rechtstreeks?
Code (php)
1
2
3
4
5
2
3
4
5
SELECT destination
FROM $tabelnaamX0
GROUP BY destination
ORDER BY COUNT(destination) DESC
LIMIT 1
FROM $tabelnaamX0
GROUP BY destination
ORDER BY COUNT(destination) DESC
LIMIT 1
En als je dit wilt uitbreiden met een LIKE conditie:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
SELECT destination
FROM $tabelnaamX0
WHERE source LIKE '$telnr%'
GROUP BY destination
ORDER BY COUNT(destination) DESC
LIMIT 1
FROM $tabelnaamX0
WHERE source LIKE '$telnr%'
GROUP BY destination
ORDER BY COUNT(destination) DESC
LIMIT 1
?
@Thomas, als 2 destinations even vaak (en het vaakst) voorkomen dan laat zijn query ze allebei zien, die van jou maar 1 destination. Maar misschien kan James wat preciezer aangeven wat hij wil bereiken.
Ik begrijp het nu, ik wilde inderdaad weten welke destination het vaakst voorkwam in de database bij 1 specifieke source. De 2e query van Thomas zou daarin moeten voorzien denk ik, ga ik zo even testen.
Wat @Jan zegt klopt denk ik wel, een constructie met een subquery is dan ook wellicht beter. Ook als je filtert zul je er dan dus voor moeten zorgen dat je niet met twee maten meet, je zult dus zowel in de hoofd- alsmede de subquery een LIKE moeten opnemen. En je moet er dan dus ook rekening mee houden dat er mogelijk meerdere resultaten zijn. Er kunnen meerdere destinations zijn die het meest (en even vaak) voorkomen. Ook als je filtert.