tronezMedlem sedan juli 2001657 inlägg
Jag har 2 tabeller som jag skulle vilja få information ur båda två
Tabell 1:
id | url | userid
1 | https://www.test.com | 1
2 | https://www.test2.com | 1
3 | https://www.test3.com | 1
Tabell 2:
id | url | userid
1 | https://www.test.com | 1
1 | https://www.test2.com | 1
1 | https://www.test2.com | 1
1 | https://www.test1.com | 1
Ungefär så här ser de ut
Jag vill nu plocka ut information från de båda så att jag får följande utskrift:
url | träffar
https://www.test.com | 1
https://www.test2.com | 2
https://www.test1.com | 1
https://www.test3.com | 0
SELECT s.url, count(s.url) as hits
FROM tabell1 as s
INNER JOIN tabell2 as ad
ON s.url = ad.url
WHERE s.url!= '' AND s.userid = 1
GROUP BY s.searchengine
ORDER BY hits DESC
Problemet med denna är att jag inte får med de URL:er som inte får någon 'hits'
Hoppas att någon förstod min önskan.
Använder MySql
emissionMedlem sedan dec. 19996 095 inlägg
Förstod kanske....
SELECT s.url, count(ad.url) as hits
FROM
(SELECT url,userid FROM tabell1 UNION SELECT url,userid FROM tabell2)
as s
LEFT JOIN tabell2 as ad
ON s.url = ad.url
WHERE s.url!= '' AND s.userid = 1
GROUP BY s.url
ORDER BY hits DESC
tronezMedlem sedan juli 2001657 inlägg
tack, det funkade som jag ville, men jag tänkte slänga hit en följdfråga innan jag accpeterar svaret.
i Tabell2 kan det ibland komma en URL som jag inte vill räkna, hur ska man gå tillväga för att lösa det?
Försökte att lägga till i WHERE satsen att 'ad.url != 'en speciell url' men då visades den ändå, men inte alla andra resultat x(
LarsGMedlem sedan dec. 200012 465 inlägg
tronezMedlem sedan juli 2001657 inlägg
Med förra koden visades ett X antalet träffar i listan, men om jag nu gjorde som du sa LarsG så fick jag inga träffar, men den visas fortfarande i listan, vilket jag inte vill ha
Något mer tips?
tronezMedlem sedan juli 2001657 inlägg
Löste det! :)
SELECT s.url, count(ad.url) as hits
FROM
(SELECT url,userid FROM tabell1 UNION SELECT url,userid FROM tabell2 WHERE url != 'www.test.com')
as s
LEFT JOIN tabell2 as ad
ON s.url = ad.url and ad.url != 'www.test.com'
WHERE s.url!= '' AND s.userid = 1
GROUP BY s.url
ORDER BY hits DESC
LarsGMedlem sedan dec. 200012 465 inlägg
Borde inte villkoret vara på s.url då?
Jag förstår ju egentligen inte din datamodell och vad som är skillnaden mellan tabell1 och tabell2. Jag tror att det mesta skulle bli enklare om du rätade ut modellen på något sätt.
tronezMedlem sedan juli 2001657 inlägg
Skulle vilha ställa en följdfråga.
SELECT s.url, count(ad.searchengine) as hits
FROM
(SELECT url,cust_id
FROM ad_coverage
UNION
SELECT searchengine,cust_id
FROM statistics
WHERE searchengine != 'www.test.com'
) as s
LEFT JOIN statistics as ad
ON s.url = ad.searchengine and ad.searchengine != 'www.test.com'
INNER JOIN ad_coverage as p ON
p.url = s.url
WHERE s.url!= '' AND s.cust_id = 2
GROUP BY s.url
ORDER BY hits DESC
Denna kod genererar ungefär följande utskrift:
1. www.test1.com 45 hits
2. www.test2.com 4 hits
3. www.test3.com 0 hits
4. www.test4.com 0 hits
'
Saken är den att https://www.test2.com endast återfinns 2 gånger i databasen, jag kan inte förstå var den får de andra 2 ifrån. Det finns en annan URL som har 2 hits, men den vill jag inte visa eftersom den ej finns i Tabell 1. Enda förklaringen jag har är att dessa 2 lägger sig i test2.com träffarna, men jag fattar inte varför
Någon idé`?