erster versuch eines joins - hilfe!
Matthias Jütte
- datenbank
0 Axel Richter0 MFJ0 Axel Richter0 MFJ
0 Cheatah
hallo zusammen!
ich bekomme folgende fehlermeldung:
+---+
SQL-query :
SELECT geschaeft.* FROM geschaeft INNER JOIN oezeiten ON geschaeft.id=oezeiten.geschaeft WHERE (oezeiten.tag='1' AND LIMIT 0, 30
MySQL said:
You have an error in your SQL syntax near 'LIMIT 0, 30' at line 1
+---+
der komplette query-string heißt:
+---+
SELECT geschaeft.* FROM geschaeft INNER JOIN oezeiten ON geschaeft.id=oezeiten.geschaeft WHERE (oezeiten.tag='1' AND oezeiten.von<='8:00'))
+---+
hier noch das dump-schema der beiden tabellen:
+---+
geschaeft
CREATE TABLE geschaeft (
id smallint(4) unsigned NOT NULL auto_increment,
name varchar(255) NOT NULL default '',
inh varchar(255) default NULL,
str varchar(255) NOT NULL default '',
hnr varchar(10) NOT NULL default '',
zusatz varchar(255) default NULL,
plz varchar(5) NOT NULL default '',
ort varchar(255) NOT NULL default '',
lage tinyint(3) unsigned NOT NULL default '0',
vorw varchar(6) default NULL,
tel varchar(100) default NULL,
email varchar(255) default NULL,
url varchar(255) default NULL,
branche smallint(4) unsigned NOT NULL default '0',
bild varchar(255) default NULL,
info text,
angebot text,
PRIMARY KEY (id),
FULLTEXT KEY angebot (angebot),
FULLTEXT KEY info (info)
) TYPE=MyISAM;
oezeiten
CREATE TABLE oezeiten (
id smallint(4) unsigned NOT NULL auto_increment,
geschaeft smallint(4) unsigned NOT NULL default '0',
tag set('1','2','3','4','5','6','7') NOT NULL default '',
von time NOT NULL default '00:00:00',
bis time NOT NULL default '00:00:00',
PRIMARY KEY (id)
) TYPE=MyISAM;
+---+
der string ist dazu bestimmt, alle daten von allen geschäften aus der tabelle geschaefte, die am montag ab 9 uhr geöffnet haben, auszulesen.
was mache ich falsch?
tia,
Matthias
Hallo,
ich bekomme folgende fehlermeldung:
+---+
SQL-query :
SELECT geschaeft.* FROM geschaeft INNER JOIN oezeiten ON geschaeft.id=oezeiten.geschaeft WHERE (oezeiten.tag='1' AND LIMIT 0, 30
MySQL said:
You have an error in your SQL syntax near 'LIMIT 0, 30' at line 1
+---+
Ja, da hat MySQL doch auch Recht. LIMIT 0 ist keine Bedingung, die in einer WHERE-Klausel stehen kann. Nach dem AND hat etwas zu stehen, was entweder TRUE oder FALSE ergibt.
der komplette query-string heißt:
+---+
SELECT geschaeft.* FROM geschaeft INNER JOIN oezeiten ON geschaeft.id=oezeiten.geschaeft WHERE (oezeiten.tag='1' AND oezeiten.von<='8:00')
Das ist aber ganz was Anderes als oben. Hier sehe ich keinen Syntaxfehler.
Welcher Zusammenhang besteht zwischen den beiden SELECT-Statements?
viele Grüße
Axel
+---+
Ja, da hat MySQL doch auch Recht. LIMIT 0 ist keine Bedingung, die in einer WHERE-Klausel stehen kann. Nach dem AND hat etwas zu stehen, was entweder TRUE oder FALSE ergibt.Welcher Zusammenhang besteht zwischen den beiden SELECT-Statements?
gerade diesen nicht vorhandenen zusammenhang vermute ich als das problem. den zweiten string schicke ich als query an die db (du sagst er sei korrekt), der erste erscheint als fehlerhaft in der fehlermeldung der db.
daraus schließe ich, daß die datenbank meine string umformt. allerdings weiß ich auch nicht, was die limit option bedeutet. daher fällt es mir schwer das ganze zu interpretieren.
(und ja, habe schon in der mysql-doku nachgesehen, werde daraus aber nicht schlau)
Hallo,
gerade diesen nicht vorhandenen zusammenhang vermute ich als das problem. den zweiten string schicke ich als query an die db (du sagst er sei korrekt), der erste erscheint als fehlerhaft in der fehlermeldung der db.
Welches SELECT schickst Du an die Datenbank?
dieses:
SELECT geschaeft.* FROM geschaeft INNER JOIN oezeiten ON geschaeft.id=oezeiten.geschaeft WHERE (oezeiten.tag='1' AND oezeiten.von<='8:00'))
oder dieses:
SELECT geschaeft.* FROM geschaeft INNER JOIN oezeiten ON geschaeft.id=oezeiten.geschaeft WHERE (oezeiten.tag='1' AND oezeiten.von<='8:00')
*Genau* hinsehen!
Wie MySQL da _von alleine_ ein LIMIT reinbastelt, weiß ich auch nicht.
viele Grüße
Axel
*Genau* hinsehen!
guter tip - die klammer war mir bisher nicht aufgefallen *blush*
danke für die hilfe!
Hi,
SELECT geschaeft.* FROM geschaeft INNER JOIN oezeiten ON geschaeft.id=oezeiten.geschaeft WHERE (oezeiten.tag='1' AND LIMIT 0, 30
"(oezeiten.tag='1' AND" ist keine gültige WHERE-Klausel.
SELECT geschaeft.* FROM geschaeft INNER JOIN oezeiten ON geschaeft.id=oezeiten.geschaeft WHERE (oezeiten.tag='1' AND oezeiten.von<='8:00'))
Ebensowenig wie "(oezeiten.tag='1' AND oezeiten.von<='8:00'))". Scharfes Hinblicken sollte eigentlich genügen.
hier noch das dump-schema der beiden tabellen:
Weder die Tabellenstruktur noch der Join stellen hier ein Problem dar.
Cheatah