我對數據庫的原則查詢有問題,我不確定是哪裏出了問題。 這裏的交易: 這是實際的MySQL查詢我用來創建數據庫:左/左加入的MySQL /原則問題
create table productos (
codigoProducto int (8) unsigned auto_increment primary key,
nombre varchar(100) not null,
id_categoria smallint(3) unsigned,
descripcion text,
foto varchar(100),
precio smallint (4) unsigned not null,
visitado int (7),
habilitado boolean,
foreign key (id_categoria)
references categorias(id)
on update cascade
on delete restrict
)engine=innoDB;
create table facturas(
id int (8) unsigned auto_increment primary key,
id_comprador int (7) unsigned,
metodo_pago boolean,
forma_entrega boolean,
fecha datetime,
foreign key (id_comprador)
references compradores(id)
on update cascade
on delete cascade
)engine=innoDB;
create table detallefactura(
id int(8) unsigned auto_increment primary key,
id_producto int(8) unsigned,
id_factura int(8) unsigned,
cantidad smallint (4),
foreign key(id_producto)
references productos(codigoProducto)
on update cascade
on delete cascade,
foreign key(id_factura)
references facturas(id)
on update cascade
on delete cascade
)engine=innoDB;
「detalleFactura」是連接表的「PRODUCTOS」和「facturas」,爲了有超過1個產品每張發票。因此,與我試圖採取在同一張發票上購買的所有產品如下:
static function traerProductosComprados($id){
$query = Doctrine_Query::create()
->select('d.id, p.nombre, p.precio, d.cantidad')
->from('Detallefactura d')
->leftjoin('d.Productos p')
->where('d.id_factura = ?',$id);
return $query->execute()->toArray();
}
如果我查詢的回聲,它顯示以下內容:
SELECT d.id, p.nombre, p.precio, d.cantidad FROM Detallefactura d LEFT JOIN d.Productos p WHERE d.id_factura = ?
,當我這個粘貼到phpMyAdmin的,它引發以下錯誤:
1064 - 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 'WHERE d.id_factura = ? LIMIT 0, 30' at line 1;
我出出主意吧,請告訴我,如果有別的我錯過!
學說爲你顯示一個錯誤?你如何迴應查詢? – j0k
你迴應的那個查詢是一個DQL語句。它不能在PhpMyAdmin中使用,它只能說SQL。 –