Toon posts:

[MySQL/SQL] SubQuery wil niet

Pagina: 1
Acties:
  • 65 views sinds 30-01-2008

Verwijderd

Topicstarter
Matched: subquery
Ik heb een database in MySQL.
Hierin heb ik een tabel posts waar alle posts staan van het forum. Nu wil ik kijken welke user de meeste posts heeft .. dit moet kunnen via de volgende subquery:

code:
1
2
3
4
5
SELECT poster_id, COUNT( post_id ) AS aantal
FROM  `posts` 
WHERE poster_id 
IN ( SELECT DISTINCT poster_id FROM `posts`) 
GROUP BY poster_id


Helaas doet deze code het niet terwijl de volgende query het wel doet:

code:
1
2
3
4
5
SELECT poster_id, COUNT( post_id ) AS aantal
FROM  `citroen_posts` 
WHERE poster_id 
IN (332,333) 
GROUP BY poster_id


Wat doe ik hier fout. Ik snap er helemaal nix meer van.

  • whoami
  • Registratie: December 2000
  • Nu online
Matched: subquery
Je 2de query gebruikt geen subquery, en MySQL ondersteund pas vanaf een bepaalde versie subqueries.

https://fgheysels.github.io/


Verwijderd

Topicstarter
Matched: subquery
whoami schreef op 10 mei 2004 @ 22:14:
Je 2de query gebruikt geen subquery, en MySQL ondersteund pas vanaf een bepaalde versie subqueries.
Ik heb MySQL v4.0.14 .. moet het mee lukken. De tweede is toch wel een soort subquery alleen dan met waarden ipv een andere query .. die query moet hetzelfde teruggeven lijkt mij!

  • SilentThunder
  • Registratie: September 2001
  • Laatst online: 22:53
Matched: subquery
Verwijderd schreef op 10 mei 2004 @ 22:16:
[...]


Ik heb MySQL v4.0.14 .. moet het mee lukken. De tweede is toch wel een soort subquery alleen dan met waarden ipv een andere query .. die query moet hetzelfde teruggeven lijkt mij!
Nee, daarmee zal het helaas niet lukken. MySQL ondersteunt pas subquery's vanaf versie 4.1.

Zie ook: http://dev.mysql.com/doc/mysql/en/ANSI_diff_Subqueries.html

Canon EOS 40D | Canon EF-S 10-22mm F/3.5-4.5 USM | Tamron 17-50mm F/2.8 | Canon EF 50mm F/1.8 II | Canon EF 70-200mm F/4L IS USM | Speedlite 430EX


  • whoami
  • Registratie: December 2000
  • Nu online
Matched: subquery
De tweede query heeft geen subquery zeg ik je. Waar zie jij een subquery?
't Is niet omdat er IN ( 44 , 4445 ) staat, dat het een subquery is. Dat is gewoon een 'OR', het is geen subquery, omdat er geen query wordt uitgevoerd.

In het eerste geval weet MySQL niet aan welke voorwaarden je query voldoet, je 2de query (subquery) moet nl. eerst uitgevoerd worden.

[ Voor 26% gewijzigd door whoami op 10-05-2004 22:19 ]

https://fgheysels.github.io/


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 10-05 12:29

Creepy

Tactical Espionage Splatterer

Matched: subquery
Verwijderd schreef op 10 mei 2004 @ 22:16:
[...]


Ik heb MySQL v4.0.14 .. moet het mee lukken. De tweede is toch wel een soort subquery alleen dan met waarden ipv een andere query. die query moet hetzelfde teruggeven lijkt mij!
Met waarden en dus geen query, dus geen subquery ;)

En je HAD de mysql manual er even bij kunnen pakken natuurlijk:
Van http://dev.mysql.com/doc/mysql/en/Subqueries.html
4.1.8 Subquery Syntax

A subquery is a SELECT statement inside another statement.

Starting with MySQL 4.1, all subquery forms and operations that the SQL standard requires are supported, as well as a few features that are MySQL-specific.

With earlier MySQL versions, it was necessary to work around or avoid the use of subqueries, but people starting to write code now will find that subqueries are a very useful part of the MySQL toolkit.
Oftewel: subqueries worden pas ondersteunt vanaf MySQL 4.1.

Edit: en dan type ik een reply, zijn er 2 man sneller!

[ Voor 3% gewijzigd door Creepy op 10-05-2004 22:20 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

Matched: subquery
Waarom wil je hiervoor een subquery gebruiken, dat is niet nodig om te bepalen welke user de meeste posts heeft gemaakt.

Verwijderd

Topicstarter
Matched: subquery
nou sorry .. ik ben ook niet thuis in de wereld die MySQL heet. Is er trouwens nog een andere manier om een soort van subquery te bouwen?

  • whoami
  • Registratie: December 2000
  • Nu online
Matched: subquery
Voor de query die jij wilt doen, heb je helemaal geen subquery nodig.

Als je gewoon wilt zien hoeveel posts er door iedere gebruiker gedaan zijn, dan doe je dat zo:

code:
1
2
3
select poster_id , count (*)
from tblPosts
group by poster_id

Als je er nog naampjes bij wilt, dan kan je met een JOIN aan de slag gaan.

https://fgheysels.github.io/


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 10-05 12:29

Creepy

Tactical Espionage Splatterer

Matched: subquery
Verwijderd schreef op 10 mei 2004 @ 22:26:
nou sorry .. ik ben ook niet thuis in de wereld die MySQL heet. Is er trouwens nog een andere manier om een soort van subquery te bouwen?
Ja die is er. In de link die ik poste staat weer een link met daarin aangegeven hoe een subquery om te schrijven. Volgende keer wel de link lezen die iemand post? ;)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Verwijderd

Geen matches
Probeer het met onderstaande opdracht :

code:
1
2
3
4
SELECT poster_id, COUNT( post_id ) AS aantal
FROM  `posts` 
GROUP BY poster_id
ORDER BY 2 DESC


De eerste row bevat de poster met het hoogste aantal posts.

Verwijderd

Topicstarter
Geen matches
Ok ik heb hem .. thnx
topic mag op slot

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18:52

gorgi_19

Kruimeltjes zijn weer op :9

Matched: subquery
Voortaan beter de handleiding lezen. :) Kijk eens op www.mysql.com ; daar staat alle documentatie. :) Verder kan je ook eens kijken naar definities; wat valt onder een gewoon statement en wat is een subquery.

In ieder geval gaat deze dicht. :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 23:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

Geen matches
Topics gaan niet op slot als ze opgelost zijn, topics gaan echter wel op slot als ze totaal niet voldoen aan de voorwaarden, en zo'n voorwaarde is dat je zelf echt wel wat meer moeite mag doen en dingen opzoekt in de manual enzo. Dat zie ik niet bepaald terug in je manier van posten eigenlijk

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.

Pagina: 1

Dit topic is gesloten.