Aanpassing in bestaande query geeft geen resultaat

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

James C

James C

07/06/2016 17:26:51
Quote Anchor link
Ik heb een perfect werkende query maar die wil ik nu iets specifieker gaan maken.
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
 
PHP hulp

PHP hulp

02/05/2024 21:09:50
 
Jan de Laet

Jan de Laet

08/06/2016 09:24:32
Quote Anchor link
@james, als je zegt hij doet het niet, bedoel je dan: ik krijg niet het gewenste/verwachte resultaat of ik krijg een error?
 
James C

James C

08/06/2016 12:13:40
Quote Anchor link
Nee ik krijg geen error, het resultaat is leeg, ook als ik de query direct in phpmyadmin uitvoer.
 
Thomas van den Heuvel

Thomas van den Heuvel

08/06/2016 13:26:18
Quote Anchor link
Je krijgt geen resultaten zodra eenzelfde soort source bij verschillende destinations voorkomt, je COUNTs komen dan niet meer overeen :).

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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
SELECT destination
FROM $tabelnaamX0
GROUP BY destination
ORDER BY COUNT(destination) DESC
LIMIT 1


En als je dit wilt uitbreiden met een LIKE conditie:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
SELECT destination
FROM $tabelnaamX0
WHERE source LIKE '$telnr%'
GROUP BY destination
ORDER BY COUNT(destination) DESC
LIMIT 1

?
 
Jan de Laet

Jan de Laet

08/06/2016 13:55:50
Quote Anchor link
@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.
 
James C

James C

08/06/2016 21:26:04
Quote Anchor link
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.
 
Thomas van den Heuvel

Thomas van den Heuvel

09/06/2016 14:03:29
Quote Anchor link
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.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.