Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[MYSQL] Locatie van '2 velden verder' ophalen*

Pagina: 1
Acties:

Verwijderd

Topicstarter
Beste leden,
ik heb op dit moment deze query:
code:
1
2
3
4
5
6
7
8
SELECT SUM(hits_subobj.hits) AS hits,
objects.location 
FROM hits_subobj 
INNER JOIN objects,subobjects 
ON (subobjects.id=hits_subobj.obj) AS a,objects.id=a 
WHERE objects.userid=5
 AND hits_subobj.dag>'20071213' 
GROUP BY objects.location


de bedoeling is:
hij geeft een lijst weer van de hits op een subobject, in tabel 'hits_subobj' bestaat het veld 'subobj' wat de id van een tabel 'subobjects' bevat.
Deze is gelinkt via veld 'obj' aan tabel 'objects', hierin is een veld 'location', hij moet dat veld selecteren.

Bvd, Timo

Kan een mod de tag in titel wijzigen van [SQL] naar [MySQL] ? Had regel hierover niet gelezen en kan nu titel niet wijzigen

[ Voor 9% gewijzigd door Verwijderd op 12-01-2008 19:03 ]


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 14-10 13:38

dusty

Celebrate Life!

code:
1
2
3
4
5
SELECT .....
FROM hits_subobj
INNER JOIN objects ON ......
INNER JOIN subobjects ON ......
WHERE ...

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • rogierslag
  • Registratie: Maart 2005
  • Laatst online: 14-10-2024
het spijt me ernstig, maar ten eerste begrijp ik helemaal niet wat je wilt doen (Er staat gewoon geen vraagteken in je post), ten tweede is het denk ik handiger als je een aantal voorbeeldwaarden geeft.

Verder is het op GoT de bedoeling dat ze zelf het een en ander aan werk doet, wij lossen niks voor je op. Dat doe je namelijk zelf nadat wij je allemaal suggesties hebben aangedragen waar je zelf mee aan de slag gaat. Hiervoor hebben we iets exacter nodig wat er fout gaat en welke waarde(n) er worden geretourneerd terwijl je welke waarde(n) verwacht.

Stel je post een als volgt op:
timomaas zal schrijven in de toekomst::p
Beste leden,
ik heb op dit moment deze query:
code:
1
2
3
4
5
6
7
8
SELECT SUM(hits_subobj.hits) AS hits,
objects.location 
FROM hits_subobj 
INNER JOIN objects,subobjects 
ON (subobjects.id=hits_subobj.obj) AS a, objects.id=a 
WHERE objects.userid=5
 AND hits_subobj.dag>'20071213' 
GROUP BY objects.location


De waarden in mijn tabellen zijn:
hits_subobj
code:
1
2
3
4
|-obj-|-hits|
|--1--|--5--|
|--5--|--9--|
|--7--|-121-|


objects
code:
1
2
3
4
5
|--id-|location|userid
|--1--|----5---|12
|--5--|----9---|5
|--7--|---121--|3
|--8--|---131--|5


subobjects
code:
1
2
3
4
5
6
7
|--id-|
|--1--|
|--2--|
|--5--|
|-12--|
|--7--|
|-121-|


Hierbij verwacht ik uitkomst x maar ik krijg uitkomst y. Snapt iemand van jullie dit?
En voor ik afsluit zou ik je query een netjes herschrijven. Ook doe je een dubbele inner join op hetzelfde veld, namelijk "subobjects.id", deze gebruik je daarna helemaal niet meer. Hierdoor kan je je query al verkleinen zonder resultaatverlies tot
(let op dat de ranzige dubbele Inner Join is vervangen tot een enkele, aangezien een gejoinde tabel (subobjects) verder niet gebruikt werd
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT 
    objects.location, 
    SUM(hits_subobj.hits) AS hits
FROM 
    hits_subobj 
INNER JOIN 
    objects
ON 
    objects.id=hits_subobj.obj
WHERE 
    objects.userid=5
    AND hits_subobj.dag > '20071213' 
GROUP BY 
    objects.location


Verder krijgt je tijdelijke MySQL tabel de volgende structuur
code:
1
2
3
4
5
6
7
|id|location|hits|userid|---dag--|
|-1|locatie1|-25-|--132-|20071215|
|-2|locat123|-35-|--12--|20070809|
|-3|loca8541|-48-|--32--|20070506|
|-4|locati20|-89-|--452-|20071214|
|-5|locatie3|-46-|--872-|20080105|
|-6|locatie3|-78-|--524-|20080105|


Bedenk of dit is wat je wil hebben

Bovenstaand voorbeeld geeft volgende output:
code:
1
2
3
4
| location | hits |
| locatie1 |  25  |
| locati20 |  89  |
| locatie3 | 124 |


Is dat wat je wilt?

[ Voor 5% gewijzigd door rogierslag op 13-01-2008 00:55 . Reden: er ging met plaatsen iets fout... ]


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

Verwijderd schreef op zaterdag 12 januari 2008 @ 18:57:
ik heb op dit moment deze query:
code:
1
2
3
4
5
SELECT SUM(hits_subobj.hits) AS hits,
objects.location 
FROM hits_subobj 
INNER JOIN objects,subobjects 
ON (subobjects.id=hits_subobj.obj) AS a,objects.id=a
Ik blijf me verbazen over wat die baggerdatabase aan malformed queries blijft slikken soms :X

Als je (thank god) de nette syntax gebruikt met voluit geschreven joins, schrijf dan ook iedere join apart uit zoals dusty aangeeft met 1 JOIN-clause per tabel.

Professionele website nodig?