Toon posts:

Nix mis met mySQL query...Who can handle this?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb hieronder het volgende probleem:
een vrij makkelijke sql-query die niet werkt (dat is dus mijn probleem)
Ik heb hiervoor veel met ASP en ACCESS gewerkt, en daar lukt het wel goed.
Nu wil ik dit doen in PHP en mySQL. De syntax van "IN" geeft hier de problemen, want afzonderlijk doen ze het gewoon goed.
Weet iemand wat er fout aan is?

SELECT * FROM Topics
WHERE Forum_ID IN (SELECT Forum_ID FROM Forums WHERE Cat_ID = $Cat_ID)

$Cat_ID is bv. 1

#
# Tabel structuur voor tabel Forums
#

CREATE TABLE Forums (
Cat_ID tinyint(3) unsigned DEFAULT '0' NOT NULL,
Forum_ID tinyint(10) unsigned DEFAULT '0' NOT NULL,
F_Name varchar(100),
F_Description varchar(255),
F_Posts int(10) DEFAULT '0',
F_Replies int(10),
F_Lastpost datetime,
F_Lastposter int(10) unsigned,
F_Moderator int(10) unsigned,
F_Anoniem tinyint(3) unsigned,
F_Member tinyint(3) unsigned,
F_Jeugdleider tinyint(3) unsigned,
F_Redactie tinyint(3) unsigned,
PRIMARY KEY (Cat_ID, Forum_ID)
);
# --------------------------------------------------------

#
# Tabel structuur voor tabel Topics
#

CREATE TABLE Topics (
Topic_ID int(10) unsigned DEFAULT '0' NOT NULL auto_increment,
Forum_ID tinyint(10) unsigned DEFAULT '0' NOT NULL,
T_Subject varchar(50) DEFAULT '0' NOT NULL,
T_Message mediumtext NOT NULL,
T_Date datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
T_Views int(10) unsigned DEFAULT '0' NOT NULL,
T_Icon int(10) unsigned DEFAULT '0' NOT NULL,
T_EmailNotify tinyint(3) unsigned DEFAULT '0' NOT NULL,
T_Closed tinyint(3) unsigned DEFAULT '0' NOT NULL,
T_IP varchar(15) DEFAULT '0' NOT NULL,
T_ShowSig tinyint(3) unsigned DEFAULT '0' NOT NULL,
T_Poster int(10) unsigned DEFAULT '0' NOT NULL,
T_Lastpost datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
T_Replies int(10) unsigned DEFAULT '0' NOT NULL,
PRIMARY KEY (Topic_ID),
KEY Topic_ID (Topic_ID)
);

Verwijderd

Mysql kent geen sub queries..

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 17:26
Waarom ben jij me net voor :'(

  • eamelink
  • Registratie: Juni 2001
  • Niet online

eamelink

Droptikkels

Ja, eigenlijk is dat MySQL wel rot he?

Je kan nooit écht mooie queries brouwen. Je zit altijd te vogelen met eerst dingen naar je script halen, daar processen, en daarop weer nieuwe queries bouwen, al met al niet echt effectief

Dit is een hele mooie querie, maar gewoon niet mogelijk met MySQL...

Dus je moet voor een MySQL database toch weer anders designen dan voor databases die wel subquerymogelijkheden hebben.

  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

sub-queries kunnen wel in SQL 4.x

  • Lurge
  • Registratie: Maart 2000
  • Niet online

Lurge

ActueleWind

jah maar welke provider ondersteund mySQL 4.0 al? geeneen volgens mij.

ActueleWind


  • Contagion
  • Registratie: Maart 2000
  • Laatst online: 08:39
Volgens mij kun je elke query die een subquery gebruikt ook anders schrijven. Dat betekent wel dat je een vreemde kruistabel krijgt waar je het een en ander uit moet filteren, maar het kan wel.

SELECT * from tabel AS t1, tabel AS t2 WHERE t1.naam=t2.naam

levert ongeveer hetzelfde op als

SELECT * FROM tabel WHERE naam IN (SELECT naam FROM tabel)

Het is wel erg triviaal in dit voorbeeld maar je krijgt ongeveer hetzelfde resultaat (in elk geval dezelfde antwoorden maar met de eerste komen er nogal wat dubbele entries voor.

Je zult dus even je Query moeten herschrijven maar het is inderdaad zo dat subqueries VEEL makkelijker te lezen zijn.

Het zal zoiets worden:

SELECT * FROM Topics, Forums where Forums.ForumID=Topics.ForumID AND Cat_ID=$Cat_ID

Succes

  • eamelink
  • Registratie: Juni 2001
  • Niet online

eamelink

Droptikkels

Wel leuk dat het mogelijk wordt om subqueries te gaan gebruiken bij MySQL 4 :)

Dat gaat erg handig worden :)

Verwijderd

Op zondag 30 december 2001 22:37 schreef eamelink het volgende:
Wel leuk dat het mogelijk wordt om subqueries te gaan gebruiken bij MySQL 4 :)

Dat gaat erg handig worden :)
En erg makkelijk..
Wat weer z'n voor en nadelen heeft.

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

Op zondag 30 december 2001 22:06 schreef TheRookie het volgende:
sub-queries kunnen wel in SQL 4.x
nooit van gehoord, SQL 4.x.. ik dacht dat we bij SQL'93 (of 92?) zaten, ook wel ANSI SQL

>:) ;)

Klaar voor een nieuwe uitdaging.


  • tomato
  • Registratie: November 1999
  • Niet online
Tizzwat:
[Subqueries]

En erg makkelijk..
Wat weer z'n voor en nadelen heeft.
Inderdaad, er zullen hier wel weer de meest stompzinnige en inefficiente subqueries langskomen tegen de tijd dat het zo ver is :z ;)

  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

Op maandag 31 december 2001 00:10 schreef chem het volgende:

[..]

nooit van gehoord, SQL 4.x.. ik dacht dat we bij SQL'93 (of 92?) zaten, ook wel ANSI SQL

>:) ;)
Ok, Ok, MySQL v4.xx dan :P |:(
Pagina: 1