foute query?
Ik heb de volgende tabellen:
CREATE TABLE `tblsites` (
`pkSiteID` bigint(21) unsigned NOT NULL auto_increment,
`naamSite` varchar(255) NOT NULL default '',
`taal` varchar(50) default NULL,
`url` varchar(255) default NULL,
`banner_1` varchar(255) default NULL,
`banner_2` varchar(255) default NULL,
`banner_3` varchar(255) default NULL,
`banner_4` varchar(255) default NULL,
`banner_5` varchar(255) default NULL,
`banner_6` varchar(255) default NULL,
`banner_7` varchar(255) default NULL,
`banner_8` varchar(255) default NULL,
`eigen` varchar(255) default NULL,
`aanmeldbonus` decimal(5,2) default NULL,
`uitbetaalgrens` varchar(25) default NULL,
`centpermail` decimal(3,1) default NULL,
`aantalmails` tinyint(3) unsigned default NULL,
`refcredit` varchar(25) default NULL,
`reflevels` tinyint(3) unsigned default NULL,
`bubble` varchar(15) default NULL,
`cijfer` tinyint(3) unsigned default NULL,
`waardering` varchar(10) default NULL,
`ervaring` longtext,
`bank` enum('0','1') default '0',
`paypal` enum('0','1') default '0',
`e_gold` enum('0','1') default '0',
`check` enum('0','1') default '0',
`moneybookers` enum('0','1') default '0',
`ewp` enum('0','1') default '0',
`fgh50` enum('0','1') default '0',
`fgh100` enum('0','1') default '0',
`sms` enum('0','1') default '0',
`prijsvragen` enum('0','1') default '0',
`enquetes` enum('0','1') default '0',
`betaalMails` enum('0','1') default '0',
`quiz` enum('0','1') default '0',
`spellen` enum('0','1') default '0',
`acties` enum('0','1') default '0',
`chat` enum('0','1') default '0',
`webtv` enum('0','1') default '0',
`18plus` enum('0','1') default '0',
`afrader` enum('0','1') default '0',
`scam` enum('0','1') default '0',
`afgekeurd` enum('0','1') default '0',
`forum` enum('0','1') default '0',
`webmaster` enum('0','1') default '0',
`systeem` varchar(10) default NULL,
`opmerkingen` longtext,
PRIMARY KEY (`pkSiteID`)
) TYPE=MyISAM COMMENT='GPT-sites';
CREATE TABLE `tblland` (
`pkNationaliteitID` tinyint(3) unsigned NOT NULL auto_increment,
`kenteken` varchar(5) NOT NULL default '',
`nationaliteit` varchar(255) NOT NULL default '',
`taal` varchar(50) default NULL,
`vlag` longblob,
`notes` longtext,
`landlink` varchar(255) default NULL,
PRIMARY KEY (`pkNationaliteitID`)
) TYPE=MyISAM COMMENT='Landen';
CREATE TABLE `tblaanmeldbonus` (
`pkAanmeldBonusID` tinyint(3) unsigned NOT NULL auto_increment,
`AanmeldBonus` varchar(25) NOT NULL default '',
PRIMARY KEY (`pkAanmeldBonusID`)
) TYPE=MyISAM COMMENT='Aanmeldbonus';
CREATE TABLE `tbluitbetaalgrens` (
`pkUitbetaalGrensID` tinyint(11) unsigned NOT NULL auto_increment,
`UitbetaalGrens` varchar(25) NOT NULL default '',
PRIMARY KEY (`pkUitbetaalGrensID`)
) TYPE=MyISAM COMMENT='Uitbetaalgrens';
CREATE TABLE `tblreflevels` (
`pkRefLevelID` tinyint(3) unsigned NOT NULL auto_increment,
`RefLevels` tinyint(3) unsigned default NULL,
PRIMARY KEY (`pkRefLevelID`)
) TYPE=MyISAM COMMENT='RefLevels';
daarmee wil ik de sites, land, aanmeldbonus, uitbetaalgrens en reflevels in een tabel laten zien.
Ik heb de volgende query:
maar ik krijg de melding:
"Something is wrong in your syntax bij '(tbluitbetaalgrens INNER JOIN (tblaanmeldbonus INNER JOIN (tblla' in regel 1"
CREATE TABLE `tblsites` (
`pkSiteID` bigint(21) unsigned NOT NULL auto_increment,
`naamSite` varchar(255) NOT NULL default '',
`taal` varchar(50) default NULL,
`url` varchar(255) default NULL,
`banner_1` varchar(255) default NULL,
`banner_2` varchar(255) default NULL,
`banner_3` varchar(255) default NULL,
`banner_4` varchar(255) default NULL,
`banner_5` varchar(255) default NULL,
`banner_6` varchar(255) default NULL,
`banner_7` varchar(255) default NULL,
`banner_8` varchar(255) default NULL,
`eigen` varchar(255) default NULL,
`aanmeldbonus` decimal(5,2) default NULL,
`uitbetaalgrens` varchar(25) default NULL,
`centpermail` decimal(3,1) default NULL,
`aantalmails` tinyint(3) unsigned default NULL,
`refcredit` varchar(25) default NULL,
`reflevels` tinyint(3) unsigned default NULL,
`bubble` varchar(15) default NULL,
`cijfer` tinyint(3) unsigned default NULL,
`waardering` varchar(10) default NULL,
`ervaring` longtext,
`bank` enum('0','1') default '0',
`paypal` enum('0','1') default '0',
`e_gold` enum('0','1') default '0',
`check` enum('0','1') default '0',
`moneybookers` enum('0','1') default '0',
`ewp` enum('0','1') default '0',
`fgh50` enum('0','1') default '0',
`fgh100` enum('0','1') default '0',
`sms` enum('0','1') default '0',
`prijsvragen` enum('0','1') default '0',
`enquetes` enum('0','1') default '0',
`betaalMails` enum('0','1') default '0',
`quiz` enum('0','1') default '0',
`spellen` enum('0','1') default '0',
`acties` enum('0','1') default '0',
`chat` enum('0','1') default '0',
`webtv` enum('0','1') default '0',
`18plus` enum('0','1') default '0',
`afrader` enum('0','1') default '0',
`scam` enum('0','1') default '0',
`afgekeurd` enum('0','1') default '0',
`forum` enum('0','1') default '0',
`webmaster` enum('0','1') default '0',
`systeem` varchar(10) default NULL,
`opmerkingen` longtext,
PRIMARY KEY (`pkSiteID`)
) TYPE=MyISAM COMMENT='GPT-sites';
CREATE TABLE `tblland` (
`pkNationaliteitID` tinyint(3) unsigned NOT NULL auto_increment,
`kenteken` varchar(5) NOT NULL default '',
`nationaliteit` varchar(255) NOT NULL default '',
`taal` varchar(50) default NULL,
`vlag` longblob,
`notes` longtext,
`landlink` varchar(255) default NULL,
PRIMARY KEY (`pkNationaliteitID`)
) TYPE=MyISAM COMMENT='Landen';
CREATE TABLE `tblaanmeldbonus` (
`pkAanmeldBonusID` tinyint(3) unsigned NOT NULL auto_increment,
`AanmeldBonus` varchar(25) NOT NULL default '',
PRIMARY KEY (`pkAanmeldBonusID`)
) TYPE=MyISAM COMMENT='Aanmeldbonus';
CREATE TABLE `tbluitbetaalgrens` (
`pkUitbetaalGrensID` tinyint(11) unsigned NOT NULL auto_increment,
`UitbetaalGrens` varchar(25) NOT NULL default '',
PRIMARY KEY (`pkUitbetaalGrensID`)
) TYPE=MyISAM COMMENT='Uitbetaalgrens';
CREATE TABLE `tblreflevels` (
`pkRefLevelID` tinyint(3) unsigned NOT NULL auto_increment,
`RefLevels` tinyint(3) unsigned default NULL,
PRIMARY KEY (`pkRefLevelID`)
) TYPE=MyISAM COMMENT='RefLevels';
daarmee wil ik de sites, land, aanmeldbonus, uitbetaalgrens en reflevels in een tabel laten zien.
Ik heb de volgende query:
Code (php)
1
2
3
4
2
3
4
SELECT tblSites.naamSite, tblLand.Taal, tblAanmeldbonus.Aanmeldbonus, tblUitbetaalgrens.Uitbetaalgrens, tblRefLevels.RefLevels
FROM tblRefLevels
INNER JOIN (tblUitbetaalgrens INNER JOIN (tblAanmeldbonus INNER JOIN (tblLand INNER JOIN tblSites ON tblLand.pkNationaliteitID = tblSites.pkNationaliteitID) ON tblAanmeldbonus.pkAanmeldbonusID = tblSites.pkAanmeldbonusID) ON tblUitbetaalgrens.pkUitbetaalgrensID = tblSites.pkUitbetaalgrensID) ON tblRefLevels.pkRefLevelID = tblSites.pkRefLevelID
ORDER BY tblUitbetaalgrens.Uitbetaalgrens, tblAanmeldbonus.Aanmeldbonus DESC;
FROM tblRefLevels
INNER JOIN (tblUitbetaalgrens INNER JOIN (tblAanmeldbonus INNER JOIN (tblLand INNER JOIN tblSites ON tblLand.pkNationaliteitID = tblSites.pkNationaliteitID) ON tblAanmeldbonus.pkAanmeldbonusID = tblSites.pkAanmeldbonusID) ON tblUitbetaalgrens.pkUitbetaalgrensID = tblSites.pkUitbetaalgrensID) ON tblRefLevels.pkRefLevelID = tblSites.pkRefLevelID
ORDER BY tblUitbetaalgrens.Uitbetaalgrens, tblAanmeldbonus.Aanmeldbonus DESC;
maar ik krijg de melding:
"Something is wrong in your syntax bij '(tbluitbetaalgrens INNER JOIN (tblaanmeldbonus INNER JOIN (tblla' in regel 1"
Blijkbaar mag dat haakje openen niet na INNER JOIN.
Zonder haakjes werkt het ook niet:
dan krijg ik dezelfde melding.
Code (php)
1
2
3
4
2
3
4
SELECT tblSites.naamSite, tblLand.Taal, tblAanmeldbonus.Aanmeldbonus, tblUitbetaalgrens.Uitbetaalgrens, tblRefLevels.RefLevels
FROM tblRefLevels
INNER JOIN tblUitbetaalgrens INNER JOIN tblAanmeldbonus INNER JOIN tblLand INNER JOIN tblSites ON tblLand.pkNationaliteitID = tblSites.pkNationaliteitID ON tblAanmeldbonus.pkAanmeldbonusID = tblSites.pkAanmeldbonusID ON tblUitbetaalgrens.pkUitbetaalgrensID = tblSites.pkUitbetaalgrensID ON tblRefLevels.pkRefLevelID = tblSites.pkRefLevelID
ORDER BY tblUitbetaalgrens.Uitbetaalgrens, tblAanmeldbonus.Aanmeldbonus DESC;
FROM tblRefLevels
INNER JOIN tblUitbetaalgrens INNER JOIN tblAanmeldbonus INNER JOIN tblLand INNER JOIN tblSites ON tblLand.pkNationaliteitID = tblSites.pkNationaliteitID ON tblAanmeldbonus.pkAanmeldbonusID = tblSites.pkAanmeldbonusID ON tblUitbetaalgrens.pkUitbetaalgrensID = tblSites.pkUitbetaalgrensID ON tblRefLevels.pkRefLevelID = tblSites.pkRefLevelID
ORDER BY tblUitbetaalgrens.Uitbetaalgrens, tblAanmeldbonus.Aanmeldbonus DESC;
dan krijg ik dezelfde melding.
Gewijzigd op 01/01/1970 01:00:00 door John de Boer
Is het niet iets in de trend van
inner join tabel on iets.id=ietsanders.id,
inner join tabel on nogiets.id=nogietsanders.id
Lijkt mij tenminste
SELECT t1.name, t2.salary
FROM employee t1 INNER JOIN info t2 ON t1.name = t2.name;
volgens deze site
Ow ja schrijf je querie ook eens uit op deze maniet
dan blijft het leesbaar tussen de code tags
inner join tabel on iets.id=ietsanders.id,
inner join tabel on nogiets.id=nogietsanders.id
Lijkt mij tenminste
SELECT t1.name, t2.salary
FROM employee t1 INNER JOIN info t2 ON t1.name = t2.name;
volgens deze site
Ow ja schrijf je querie ook eens uit op deze maniet
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
SELECT
a.jouwding
FROM
jouwtabel a
INNER JOIN
jouwtabel b
ON a.id=b.id
WHERE
a.blaat = 3
ORDER BY a.id
a.jouwding
FROM
jouwtabel a
INNER JOIN
jouwtabel b
ON a.id=b.id
WHERE
a.blaat = 3
ORDER BY a.id
dan blijft het leesbaar tussen de code tags
Gewijzigd op 01/01/1970 01:00:00 door Klaasjan Boven
Je hebt gelijk Klaasjan:
de goeie query moest zijn:
Ik had de 1e query ook direkt uit Access overgenomen maar moest het dus nog ff naar MySQL 'vertalen'
de goeie query moest zijn:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
SELECT tblSites.naamSite, tblLand.Taal, tblAanmeldbonus.Aanmeldbonus, tblUitbetaalgrens.Uitbetaalgrens, tblRefLevels.RefLevels
FROM tblRefLevels
INNER JOIN tblUitbetaalgrens ON tblUitbetaalgrens.pkUitbetaalgrensID = tblSites.Uitbetaalgrens
INNER JOIN tblAanmeldbonus ON tblAanmeldbonus.pkAanmeldbonusID = tblSites.Aanmeldbonus
INNER JOIN tblLand ON tblLand.pkNationaliteitID = tblSites.taal
INNER JOIN tblSites ON tblRefLevels.pkRefLevelID = tblSites.RefLevels
ORDER BY tblUitbetaalgrens.Uitbetaalgrens, tblAanmeldbonus.Aanmeldbonus DESC;
FROM tblRefLevels
INNER JOIN tblUitbetaalgrens ON tblUitbetaalgrens.pkUitbetaalgrensID = tblSites.Uitbetaalgrens
INNER JOIN tblAanmeldbonus ON tblAanmeldbonus.pkAanmeldbonusID = tblSites.Aanmeldbonus
INNER JOIN tblLand ON tblLand.pkNationaliteitID = tblSites.taal
INNER JOIN tblSites ON tblRefLevels.pkRefLevelID = tblSites.RefLevels
ORDER BY tblUitbetaalgrens.Uitbetaalgrens, tblAanmeldbonus.Aanmeldbonus DESC;
Ik had de 1e query ook direkt uit Access overgenomen maar moest het dus nog ff naar MySQL 'vertalen'
Gewijzigd op 01/01/1970 01:00:00 door John de Boer
Hij doet het?
Mooi weer iemand blij :) ( en dat op Sinterklaas(jan))
Mooi weer iemand blij :) ( en dat op Sinterklaas(jan))
Offtopic: Ik heb het idee dat het datamodel niet optimaal is.
Dit stuk is in elk geval niet genormaliseerd.
Verder had je beter geen MyIsam kunnen gebruiken, met innoDB kun je namelijk foreignkey's gebruiken en krijg je een veel betere database. Met MyIsam hangen alle tabellen als los zand aan elkaar. 1 verkeerde query en de hele boel stort als een kaartenhuis in elkaar. Met foreignkey's (worden alleen met innoDB ondersteund) kun je dit soort problemen voorkomen.
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
`banner_1` varchar(255) default NULL,
`banner_2` varchar(255) default NULL,
`banner_3` varchar(255) default NULL,
`banner_4` varchar(255) default NULL,
`banner_5` varchar(255) default NULL,
`banner_6` varchar(255) default NULL,
`banner_7` varchar(255) default NULL,
`banner_8` varchar(255) default NULL,
`banner_2` varchar(255) default NULL,
`banner_3` varchar(255) default NULL,
`banner_4` varchar(255) default NULL,
`banner_5` varchar(255) default NULL,
`banner_6` varchar(255) default NULL,
`banner_7` varchar(255) default NULL,
`banner_8` varchar(255) default NULL,
Verder had je beter geen MyIsam kunnen gebruiken, met innoDB kun je namelijk foreignkey's gebruiken en krijg je een veel betere database. Met MyIsam hangen alle tabellen als los zand aan elkaar. 1 verkeerde query en de hele boel stort als een kaartenhuis in elkaar. Met foreignkey's (worden alleen met innoDB ondersteund) kun je dit soort problemen voorkomen.




