Toon posts:

[MySQL] select * from (select * from mytable) werkt niet??

Pagina: 1
Acties:

Verwijderd

Topicstarter
Al de hele dag aan het stoeien en kom er niet uit, kan ook niets vinden in de search. De volgende syntax moet toch gewoon kunnen :? :
SQL:
1
select * from (select * from mytable)

Ik wil uiteindelijk dit doen:
SQL:
1
select count (*) from (select bla from mytable where blabla)

Ik ben aan het werken in een access database, in VB. Ik draai een MySQL database op onze server. Eerst heb ik de tabellen uit mysql gelinkt via odbc. Deze tabellen zijn dan zichtbaar in het tabellenoverzicht van Access. Via de connection Currentproject.Connection kon ik bovenstaande sql prima uitvoeren. Nu leg ik de connectie direct naar de mysql driver via code:
Visual Basic:
1
2
3
4
5
6
strMyConnection = "DRIVER={MySQL ODBC 3.51 Driver};" & _
                         "SERVER=192.168.0.1;" & _
                         "DATABASE=;" & _
                         "UID=sjoerd;" & _
                         "PASSWORD=*****;" & _
                         "OPTION=3;" 

Nu lukt de sql query ineens niet meer. Ook kan ik de query niet uitvoeren in MySQL control center; die geeft een error 1064 "You have an error in your SQL syntax". Wat doe ik fout?

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 14:41

MueR

Admin Devschuur® & Discord

is niet lief

Welke MySQL versie draai je? Subqueries worden door sommige oudere versies (ik dacht < 4.1) niet ondersteund

Anyone who gets in between me and my morning coffee should be insecure.


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
Welke versie van MySQL heb je? AFAIK worden subselects pas vanaf 4.1 ondersteund. Ik vraag me trouwens af waarom je een subselect nodig denkt te hebben? Wat je hierboven beschrijft lukt ook wel in 1 query.

Oops! Google Chrome could not find www.rijks%20museum.nl


  • DizzyWeb
  • Registratie: Februari 2001
  • Laatst online: 14:27

DizzyWeb

Ondertiteld

Welke versie is je MySQL server? Subqueries worden pas vanaf versie 4.1 ondersteund.

  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

klopt
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 MySQL versions prior to 4.1, it was necessary to work around or avoid the use of subqueries. In many cases, subqueries can successfully be rewritten using joins and other methods.
[edit] een count(*) met een subselect lijkt me ook op te lossen met een goede WHERE icm GROUP BY ?

[ Voor 11% gewijzigd door TheRookie op 29-09-2005 15:54 ]


Verwijderd

Knap dat je dat niet hebt gevonden met zoektermen als MySQL en subquery ...

Verwijderd

Topicstarter
Hmm daar zeggen jullie wat; we draaien volgens mij een 3.x versie! Grappig dat Access er dan WEL chocola van kan maken en de query netjes uitvoert.Ik heb de code versimpeld om jullie niet op te zadelen met onleesbare sql ;). Echter, ik wil het volgende doen (ook weer versimpeld ;)): een user geeft een SQL statement in, en ik wil daar graag effe snel het aantal records van bepalen. De volgende code werkt prima als je de connection van access gebruikt:
Visual Basic:
1
2
3
strSQL = [door user in te voeren SELECT statement]
rsAantal.open "SELECT COUNT (*) AS CNT FROM (" & strSQL & ")" , conMyconnection, [etc]
nAantal = rsAantal!CNT


Ik ben net een paar dagen bezig met MySQL en ken SQL syntax alleen via access...daarom misschien niet goed gezocht 8)7

[ Voor 12% gewijzigd door Verwijderd op 29-09-2005 15:56 ]


  • PhoeniX-
  • Registratie: Juni 2000
  • Laatst online: 29-04 09:11
Als je al de goede versie gebruikt vergeet je zo te zien 'AS' in je query.

Zie deze manual page voor syntax uitleg.

  • JaWi
  • Registratie: Maart 2003
  • Laatst online: 14-01 21:58

JaWi

maak het maar stuk hoor...

Verwijderd schreef op donderdag 29 september 2005 @ 15:46:
Ik wil uiteindelijk dit doen:
SQL:
1
select count (*) from (select bla from mytable where blabla)
Hmm, nu is m'n SQL ietwat roestig, maar kun je bovenstaande niet op de volgende manier doen:

SQL:
1
SELECT COUNT(*) FROM mytable WHERE blabla


Dan heb je iig geen -overbodige- subquery nodig en doet precies hetzelfde (zo op het oog)...

edit:
Spuit elf...

[ Voor 4% gewijzigd door JaWi op 29-09-2005 15:56 ]

Statistics are like bikinis. What they reveal is suggestive, but what they hide is vital.


  • Confusion
  • Registratie: April 2001
  • Laatst online: 01-03-2024

Confusion

Fallen from grace

Verwijderd schreef op donderdag 29 september 2005 @ 15:54:
Knap dat je dat niet hebt gevonden met zoektermen als MySQL en subquery ...
Nouja, je moet natuurlijk wel eerst weten dat zoiets een subquery genoemd wordt. Bovendien is het, als je ervaring met een andere dbs hebt, helemaal niet logisch om te vermoeden dat dat het probleem is. Dat moet je maar net een keer gehoord/gezien hebben.

Wie trösten wir uns, die Mörder aller Mörder?


  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
Verwijderd schreef op donderdag 29 september 2005 @ 15:54:
Hmm daar zeggen jullie wat; we draaien volgens mij een 3.x versie!
Is het dan niet eens tijd te upgraden?

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

OlafvdSpek schreef op donderdag 29 september 2005 @ 17:23:
Is het dan niet eens tijd te upgraden?
Daar moet dan wel even de mogelijkheid toe zijn he? Sowieso is niet alles altijd backwards compatible. Een hoster zal dus altijd veel moeten testen en kijken of alle software die runt op zijn systeem ook nog zou werken als er een nieuwe versie wordt geïnstalleerd, en daar gaat gewoon wat tijd overheen.

Op mijn host werk ik ook nog gewoon met MySQL 3.23, is geen enkel probleem, mits je de beperkingen en workarounds kent.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
-NMe- schreef op donderdag 29 september 2005 @ 17:37:
Daar moet dan wel even de mogelijkheid toe zijn he? Sowieso is niet alles altijd backwards compatible.
Natuurlijk. Maar in het geval van MySQL zou je ook beide versies kunnen installeren.

Verwijderd

Topicstarter
Op zich werkt alles perfect op onze server, b.v. urenregistratie. Mysql wordt eigenlijk nergens anders voor gebruikt. Upgraden brengt installatiekosten voor onze IT provider met zich mee en een klein probleempje met 1 query rechtvaardigt dat niet. Thuis kan je nog eens lekker gaan zitten prutsen en proberen, maar op 't werk heerst toch vaak de 'why change a winning team' gedachte, vooral als het geld kost. (of is die installatie in een uurtje gedaan, ben wel benieuwd eigenlijk ;)?)

  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
Verwijderd schreef op vrijdag 30 september 2005 @ 08:55:
(of is die installatie in een uurtje gedaan, ben wel benieuwd eigenlijk ;)?)
Als er tijdens een upgrade geen problemen optreden ben je binnen een kwartier klaar.
Als je eerst een backup maakt kun je (als er toch problemen optreden) ook weer zo terug.

  • Eric
  • Registratie: December 2000
  • Laatst online: 01-04 09:51
Hou er wel rekening mee dat de laatste versies van MySQL standaard de wachtwoorden opslaan met een betere encryptie, waardoor bij bijv. php de mysql-opdrachten niet meer werken (en je eigenlijke mysqli-opdrachten moet gebruiken)

Dit is trouwens op te lossen door de oude wachtwoorden weer uit de backup te halen (ze worden nog wel ondersteund, maar standaard wordt bij een nieuw wachtwoord de nieuwere encryptie gebruikt) en zo terug te zetten, en bij het aanmaken van nieuwe wachtwoorden via sql-querys oldpassword ipv password te gebruiken.
Pagina: 1