[MySQL] Subquery database selecteren

Pagina: 1
Acties:

  • qwertyuiop
  • Registratie: Juni 2002
  • Laatst online: 09-05 15:44
Hoi,

Ik kom ergens niet uit (kijk er misschien wel overheen). Ik heb het werkend maar wil de syntax eenvoudiger (als dat mogelijk is). Maar eerst de source:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
if (isset($_GET['category'])) {

  $query = mysql_query("SELECT *
  FROM pages WHERE title = '$_GET[category]'");
  
  if (isset($_GET['id'])) {
    
    $tmprecord = mysql_fetch_object($query);
    $query = mysql_query("SELECT *
    FROM $tmprecord->dbname") or die(mysql_error());
    $record = mysql_fetch_object($query);
  
  }
  
  else {

    $record = mysql_fetch_object($query);
  
  }

}


Nou wil ik graag een selectie uitvoeren met een subquery. Ik probeer het alsvolgt:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
if (isset($_GET['category'])) {

  if (isset($_GET['id'])) {
    
    $query = mysql_query("SELECT * FROM (SELECT dbname FROM pages
    WHERE title = '$_GET[category]')") or die(mysql_error());
    $record = mysql_fetch_object($query);
  
  }
  
  else {

    $query = mysql_query("SELECT * FROM pages
    WHERE title = '$_GET[category]'");
    $record = mysql_fetch_object($query);
  
  }

}


De query geeft nu de volgende syntac error:
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT dbname FROM pages WHERE title = 'doeterevenniettoe')' at line 1

Wat doe ik fout aan de query? 8)7 :z

[ Voor 7% gewijzigd door qwertyuiop op 21-08-2004 00:39 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 06:53

gorgi_19

Kruimeltjes zijn weer op :9

echo je query eens en post die eens?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Tux
  • Registratie: Augustus 2001
  • Laatst online: 09:01

Tux

Welke versie van MySQL gebruik je? Alleen de nieuwste versies van MySQL hebben ondersteuning voor subqueries, voor zover ik weet.

Verder is het natuurlijk ook niet netjes om het volgende te doen:
code:
1
SELECT * FROM (SELECT dbname FROM pages WHERE title = '$_GET[category]')


$_GET[category] zal in E_ALL een warning opleveren ;)

gebruik dus liever:
code:
1
SELECT * FROM (SELECT dbname FROM pages WHERE title = '" . $_GET['category'] . "')


En een tabelnaam uit een tabel halen, om daar vervolgens alles uit te selecteren duidt niet echt op een goed database design ;)

[ Voor 65% gewijzigd door Tux op 21-08-2004 00:46 ]

The NS has launched a new space transportation service, using German trains which were upgraded into spaceships.


  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

qwertyuiop schreef op 21 augustus 2004 @ 00:39:
Wat doe ik fout aan de query? 8)7 :z
Die 2e query kan gewoon niet.
Die eerste werkt, dus is goed.
Het eigenlijke probleem zit in je datamodel, waarom heb je verschillende categorieen in afzonderlijke tabellen zitten?

Who is John Galt?


  • qwertyuiop
  • Registratie: Juni 2002
  • Laatst online: 09-05 15:44
justmental schreef op 21 augustus 2004 @ 00:45:
[...]

Die 2e query kan gewoon niet.
Die eerste werkt, dus is goed.
Het eigenlijke probleem zit in je datamodel, waarom heb je verschillende categorieen in afzonderlijke tabellen zitten?
Je zou inderdaad zeggen dat het zo een zooitje word maar eigenlijk heb ik er een tijdje over nagedacht voordat ik eraan begon.

Het heeft te maken met een CMS dat ik aan het schrijven ben waar ik de modules in een database opgeef. En waar ik de modules makkelijk kan uitbreiden. Dus aan de hand van die gegevens stuur ik de modules aan. Het werkt verder echt prima en is best mooi om te zien. ;)

Verwijderd

Volgens mysql moet het als volgt.
Subqueries are legal in a SELECT statement's FROM clause. The syntax that you'll actually see is:

SELECT ... FROM (subquery) AS name ...

The AS name clause is mandatory, because every table in a FROM clause must have a name. Any columns in the subquery select list must have unique names. You can find this syntax described elsewhere in this manual, where the term used is ``derived tables.''

Zie http://dev.mysql.com/doc/mysql/en/Unnamed_views.html voor verdere info.

  • qwertyuiop
  • Registratie: Juni 2002
  • Laatst online: 09-05 15:44
Verwijderd schreef op 21 augustus 2004 @ 00:57:
Volgens mysql moet het als volgt.
Subqueries are legal in a SELECT statement's FROM clause. The syntax that you'll actually see is:

SELECT ... FROM (subquery) AS name ...

The AS name clause is mandatory, because every table in a FROM clause must have a name. Any columns in the subquery select list must have unique names. You can find this syntax described elsewhere in this manual, where the term used is ``derived tables.''

Zie http://dev.mysql.com/doc/mysql/en/Unnamed_views.html voor verdere info.
Heb ik al bekeken en geprobeerd zonder succes. Hetgeen wat ik wil kom ik ook nergens tegen. Ik heb voormij een SQL boek liggen waar subquery in voorkomt maar dan op een andere manier gebruikt word.

  • Kees
  • Registratie: Juni 1999
  • Laatst online: 23-05 13:53

Kees

Serveradmin / BOFH / DoC
mysql kan helemaal geen subqueries aan, op een hele enkele uitzondering na (en de alpha versies)

[ Voor 13% gewijzigd door Kees op 21-08-2004 01:19 ]

"Een serveradmin, voluit een serveradministrator, is dan weer een slavenbeheerder oftewel een slavendrijver" - Rataplan


  • qwertyuiop
  • Registratie: Juni 2002
  • Laatst online: 09-05 15:44
Kees schreef op 21 augustus 2004 @ 01:19:
mysql kan helemaal geen subqueries aan, op een hele enkele uitzondering na (en de alpha versies)
Kees,

even offtopic. Wat hebben jullie met atlas gedaan?

modbreak: uh dit heeft niets in P&W te zoeken he 8)7 hij zit op ICQ en IRC, en tevens staat in Lieve Adjes een hoop uitleg over dit onderwerp :)

[ Voor 26% gewijzigd door curry684 op 21-08-2004 01:51 ]


  • Johnny
  • Registratie: December 2001
  • Laatst online: 22-05 10:01

Johnny

ondergewaardeerde internetguru

Kees schreef op 21 augustus 2004 @ 01:19:
mysql kan helemaal geen subqueries aan, op een hele enkele uitzondering na (en de alpha versies)
Versie 4, met ondersteuning subqueries is toch al maanden geleden als "stable" uitgekomen? :?

Aan de inhoud van de bovenstaande tekst kunnen geen rechten worden ontleend, tenzij dit expliciet in dit bericht is verwoord.

Pagina: 1