Toon posts:

[MySQL] Queries combineren

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb deze 3 queries en wil er graag een van maken.
Het probleem dat ik tegen kom is dat in een query niet meerdere keren WHERE kan voorkomen. Moet ik hiervoor gebruik gaan maken van JOIN's ??

SELECT t.naam,
COUNT(w.wd) as wd
FROM wed_zaterdag1 w, teams t
WHERE (thuis_wed = t.id OR uit_wed = t.id)
AND ((thuis_uitslag is not null)
OR (uit_uitslag is not null))
GROUP BY t.id

SELECT t.naam,
COUNT(thuis_wed AND uit_wed AND thuis_uitslag AND uit_uitslag) as gw
FROM wed_zaterdag1 w, teams t
WHERE thuis_wed = t.id
AND w.thuis_uitslag > uit_uitslag
OR uit_wed = t.id
AND thuis_uitslag < uit_uitslag
GROUP BY t.id

SELECT t.naam,
COUNT(thuis_wed AND uit_wed AND thuis_uitslag AND uit_uitslag) as gw
FROM wed_zaterdag1 w, teams t
WHERE thuis_wed = t.id
AND w.thuis_uitslag = uit_uitslag
OR uit_wed = t.id
AND thuis_uitslag = uit_uitslag
GROUP BY t.id

  • Grum
  • Registratie: Juni 2001
  • Niet online
jah en nee dat gaat je niet lukken.

  • Super_ik
  • Registratie: Maart 2001
  • Laatst online: 16:36

Super_ik

haklust!

probeer t eens stapje voor stapje te combineren. en dan telkens testen, als je in een keer alle 3 de querys wil ombouwen tot 1 dan gaat t zeken nie goed. ik kan je verden nie helpen hiermee. want ik heb geen zin om t allemaal te testen enzo :)
alleen deze tip :stapje voor stapje dus :)

8<------------------------------------------------------------------------------------
Als ik zo door ga haal ik m'n dood niet. | ik hou van goeie muziek


Verwijderd

Topicstarter
Op zondag 17 maart 2002 18:47 schreef Grum het volgende:
jah en nee dat gaat je niet lukken.
Waarom kan het wel en waarom niet ?

  • Life-is-party
  • Registratie: Oktober 2000
  • Laatst online: 14-02-2023
Dit gaat je niet lukken. Want je haalt het ene uit de database dat aan hele andere voorwaardes moet voldoen, dan in je andere query.

*UPDATE*
Misschien moet je effies allebei de tabelstructuren hier posten. en de 3 waardes die je meoten weten. (wat de bedoeling is dat je komt te weten, ná die 3 queries)

dan kan je er misschien een totaal nieuwe van maken

Acer TM661LMi - Intel Centrino 1,4 Ghz - 512mb ram - DVD-RW


Verwijderd

Topicstarter
Op zondag 17 maart 2002 18:56 schreef dombie-dom het volgende:
Dit gaat je niet lukken. Want je haalt het ene uit de database dat aan hele andere voorwaardes moet voldoen, dan in je andere query.
Klopt. Dat gaf ik zelf ook al aan. Het zal toch wel op een of andere manier mogelijk zijn ?
*UPDATE*
Misschien moet je effies allebei de tabelstructuren hier posten. en de 3 waardes die je meoten weten. (wat de bedoeling is dat je komt te weten, ná die 3 queries)
Dit zijn de database structuren:

Tabel teams:
id (id nummer van het team)
klasse_id (klasse van het team)
naam (naam van het team)
aanvang (aanvang van de thuiswedstrijden)

Tabel wed_zaterdag1
id (id nummer wedstrijd)
wd (wedstrijddag)
datum
thuis_wed (thuis spelende team)
uit_wed (uit spelende team)
thuis_uitslag
uit_uitslag

De gegevens die ik wil tonen zijn het aantal gespeelde wedstrijd, aantal gewonnen, gelijk en verloren wedstrijden per team en het aantal gescoorde en tegen doelpunten. Ik ben begonnen met 3 queries om het niet te moeilijk te maken. In totaal worden het er 6. Als dit werkt is makkelijk om ook de andere toe te voegen.

  • Life-is-party
  • Registratie: Oktober 2000
  • Laatst online: 14-02-2023
En wat moetje nu tonen, produceren, maken. wat staat er op die pagina waar je die 3 queries gebruikt?

Acer TM661LMi - Intel Centrino 1,4 Ghz - 512mb ram - DVD-RW


Verwijderd

Topicstarter
Op zondag 17 maart 2002 19:19 schreef dombie-dom het volgende:
En wat moetje nu tonen, produceren, maken. wat staat er op die pagina waar je die 3 queries gebruikt?
Ik heb iets aan mijn vorige bericht toegevoegd.
Wat ik wil afbeelden is de stand van mijn voetbalelftal aan de hand van de in de database aanwezige uitslagen.

  • Life-is-party
  • Registratie: Oktober 2000
  • Laatst online: 14-02-2023
Omdat het 1 regel is en 2 tabellen. zou het in principe gewoon mogelijk moeten zijn. Ik weet het wel zeker.

Eigenlijk kan je die team-naam tabel zelfs buiten beschouwing laten in het begin.

Dus wat moet je weten en waarom moet hij op sorteren. (welke volgorde is belangrijk)
teken hem uit
je hebt dus:
- punten (COUNT(welke kolomen?))
- winst (COUNT(welke kolomen?))
- gelijk (COUNT(welke kolomen?))
- verlies (COUNT(welke kolomen?))
- doelpunten voor (COUNT(welke kolomen?))
- doelpunten tegen (COUNT(welke kolomen?))

En dan lekker gaan samenvoegen

Acer TM661LMi - Intel Centrino 1,4 Ghz - 512mb ram - DVD-RW


  • HenkS
  • Registratie: Mei 2000
  • Laatst online: 16:13

HenkS

Da_king alias HenkS

dit gaat niet als je geen kolommen hebt met aantal gewonnen, verloren en gelijk, want op deze manier kun je dat niet echt goed gaan berekenen, als je er nu 3 kolommen bij maakt dus een echte 'stand-structuur' is alles veel makkelijker te berekenen

en ga je trouwens voor zaterdag2, of zondag1 of wat er dan ook zal zijn weer een nieuwe tabel maken???? want ik zie dat de 2e tabel zaterdag1 heet ofzo?? lijkt me ook niet zo handig, zou eerst eens goed nadenken over de tabelstructuur voordat je gaan querien

Verwijderd

Topicstarter
Op zondag 17 maart 2002 19:36 schreef dombie-dom het volgende:
Omdat het 1 regel is en 2 tabellen. zou het in principe gewoon mogelijk moeten zijn. Ik weet het wel zeker.

Eigenlijk kan je die team-naam tabel zelfs buiten beschouwing laten in het begin.

Dus wat moet je weten en waarom moet hij op sorteren. (welke volgorde is belangrijk)
teken hem uit
je hebt dus:
- punten (COUNT(welke kolomen?))
- winst (COUNT(welke kolomen?))
- gelijk (COUNT(welke kolomen?))
- verlies (COUNT(welke kolomen?))
- doelpunten voor (COUNT(welke kolomen?))
- doelpunten tegen (COUNT(welke kolomen?))
Het is toch niet mogelijk om in een COUNT een WHERE statement te gebruiken ?
Als dat wel kan moet ik de documentatie toch nog een keer gaan lezen :)

  • HenkS
  • Registratie: Mei 2000
  • Laatst online: 16:13

HenkS

Da_king alias HenkS

waarom niet simpel bovenstaande tabellen en als je dan bij de uitslagen tabel via formulier ofzo de uitslag invult, dat in tabel 3 (die je dus nog moet maken) per team, een update doet, dus gewonnen +1 , ofzo iets dat is veel handiger dan wat je nu wilt...

  • The - DDD
  • Registratie: Januari 2000
  • Laatst online: 03-09 16:40
UNION

Verwijderd

Topicstarter
Op zondag 17 maart 2002 20:54 schreef The - DDD het volgende:
UNION
Dat wordt pas vanaf versie 4.0.0 van MySQL ondersteund. Ik gebruik MySQL 3.23.37

  • The - DDD
  • Registratie: Januari 2000
  • Laatst online: 03-09 16:40
Kijk dat wist ik dus niet.

Verwijderd

Topicstarter
Op zondag 17 maart 2002 21:11 schreef The - DDD het volgende:
Kijk dat wist ik dus niet.
Ik heb 3.23 geupgrade naar 4.0.1
UNION werkt, maar ik krijg niet het verwachtte resultaat.

Ik heb de volgende query:

SELECT t.naam, count(w.wd) as wd
FROM wed_zaterdag1 w, teams t
WHERE (thuis_wed = t.id OR uit_wed = t.id)
AND (thuis_uitslag is not null) OR (uit_uitslag is not null)
GROUP BY t.id
UNION
SELECT t.naam,
COUNT(thuis_wed AND uit_wed AND thuis_uitslag AND uit_uitslag) as gw
FROM wed_zaterdag1 w, teams t
WHERE thuis_wed = t.id
AND w.thuis_uitslag > uit_uitslag
OR uit_wed = t.id
AND thuis_uitslag < uit_uitslag
GROUP BY t.id
UNION
SELECT t.naam,
COUNT(thuis_wed AND uit_wed AND thuis_uitslag AND uit_uitslag) as gl
FROM wed_zaterdag1 w, teams t
WHERE thuis_wed = t.id
AND w.thuis_uitslag = uit_uitslag
OR uit_wed = t.id
AND thuis_uitslag = uit_uitslag
GROUP BY t.id
UNION
SELECT t.naam,
COUNT(thuis_wed AND uit_wed AND thuis_uitslag AND uit_uitslag) as vl
FROM wed_zaterdag1 w, teams t
WHERE thuis_wed = t.id
AND w.thuis_uitslag < uit_uitslag
OR uit_wed = t.id
AND thuis_uitslag > uit_uitslag
GROUP BY t.id

Dan verwacht ik dat ik met:
.$row[wd]. het aantal wedstrijden kan afbeelden
en met . $row[gw] . het aantal gewonnen
etc...

Dat gebeurd niet. Alle resultaten (dus van wd, gw, gl en vl) worden onder elkaar geplaatst als kolomnaam '[wd]'.

Is dit een beperking van union ?
De manual van mysql doet precies hetzelfde als wat ik doe.
Pagina: 1