Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

LACRIMAL

[Resolvido] join

Recommended Posts

estou interligando algumas tabelas com um model (blog) da seguinte maneira:

var $hasMany = array('img_blogs' => array(
'className' => 'ImgBlog',
'conditions' => 'tipo = "m"',
'order' => 'id DESC'),
'cmt_blogs' => array(
'className' => 'CmtBlog',
'conditions' => 'mostrar = "s"',
'order' => 'data_hora DESC'));

var $belongsTo = array('atr_blogs' => array(
'className' => 'AtrBlog',
'order' => 'id ASC'
));

 

o erro é o seguinte:

Warning (512): SQL Error: 1052: Column 'id' in order clause is ambiguous [COREcakelibsmodeldatasourcesdbo_source.php, line 549]

Query: SELECT `Blog`.`id`, `Blog`.`atr_blogs_id`, `Blog`.`titulo`, `Blog`.`titulo_slug`, `Blog`.`post`, `Blog`.`data-hora`, `atr_blogs`.`id`, `atr_blogs`.`nome`, `atr_blogs`.`descricao`, `atr_blogs`.`email`, `atr_blogs`.`twitter` FROM `blogs` AS `Blog` LEFT JOIN `atr_blogs` AS `atr_blogs` ON (`Blog`.`atr_blogs_id` = `atr_blogs`.`id`) WHERE 1 = 1 ORDER BY `id` DESC, `id` ASC

Query: SELECT COUNT(*) AS `count` FROM `blogs` AS `Blog` LEFT JOIN `atr_blogs` AS `atr_blogs` ON (`Blog`.`atr_blogs_id` = `atr_blogs`.`id`) WHERE 1 = 1 ORDER BY `id` ASC

Query: SELECT `Blog`.`id`, `Blog`.`atr_blogs_id`, `Blog`.`titulo`, `Blog`.`titulo_slug`, `Blog`.`post`, `Blog`.`data-hora`, `atr_blogs`.`id`, `atr_blogs`.`nome`, `atr_blogs`.`descricao`, `atr_blogs`.`email`, `atr_blogs`.`twitter` FROM `blogs` AS `Blog` LEFT JOIN `atr_blogs` AS `atr_blogs` ON (`Blog`.`atr_blogs_id` = `atr_blogs`.`id`) WHERE 1 = 1 ORDER BY `id` desc, `id` ASC LIMIT 3

 

alguem sabe me dizer como resolver isso ?

obrigado, desde já Imagem Postada

Compartilhar este post


Link para o post
Compartilhar em outros sites

estou interligando algumas tabelas com um model (blog) da seguinte maneira:

var $hasMany = array('img_blogs' => array(
'className' => 'ImgBlog',
'conditions' => 'tipo = "m"',
'order' => 'id DESC'),
'cmt_blogs' => array(
'className' => 'CmtBlog',
'conditions' => 'mostrar = "s"',
'order' => 'data_hora DESC'));

var $belongsTo = array('atr_blogs' => array(
'className' => 'AtrBlog',
'order' => 'id ASC'
));

 

o erro é o seguinte:

Warning (512): SQL Error: 1052: Column 'id' in order clause is ambiguous [COREcakelibsmodeldatasourcesdbo_source.php, line 549]

Query: SELECT `Blog`.`id`, `Blog`.`atr_blogs_id`, `Blog`.`titulo`, `Blog`.`titulo_slug`, `Blog`.`post`, `Blog`.`data-hora`, `atr_blogs`.`id`, `atr_blogs`.`nome`, `atr_blogs`.`descricao`, `atr_blogs`.`email`, `atr_blogs`.`twitter` FROM `blogs` AS `Blog` LEFT JOIN `atr_blogs` AS `atr_blogs` ON (`Blog`.`atr_blogs_id` = `atr_blogs`.`id`) WHERE 1 = 1 ORDER BY `id` DESC, `id` ASC

Query: SELECT COUNT(*) AS `count` FROM `blogs` AS `Blog` LEFT JOIN `atr_blogs` AS `atr_blogs` ON (`Blog`.`atr_blogs_id` = `atr_blogs`.`id`) WHERE 1 = 1 ORDER BY `id` ASC

Query: SELECT `Blog`.`id`, `Blog`.`atr_blogs_id`, `Blog`.`titulo`, `Blog`.`titulo_slug`, `Blog`.`post`, `Blog`.`data-hora`, `atr_blogs`.`id`, `atr_blogs`.`nome`, `atr_blogs`.`descricao`, `atr_blogs`.`email`, `atr_blogs`.`twitter` FROM `blogs` AS `Blog` LEFT JOIN `atr_blogs` AS `atr_blogs` ON (`Blog`.`atr_blogs_id` = `atr_blogs`.`id`) WHERE 1 = 1 ORDER BY `id` desc, `id` ASC LIMIT 3

 

alguem sabe me dizer como resolver isso ?

obrigado, desde já Imagem Postada

 

 

 

Teu problema tá nesses Order ali cara, tá dizendo que o ID é ambíguo. Tá sendo usado dois campos com o mesmo nome.

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

 

 

estou interligando algumas tabelas com um model (blog) da seguinte maneira:

var $hasMany = array('img_blogs' => array(
'className' => 'ImgBlog',
'conditions' => 'tipo = "m"',
'order' => 'id DESC'),
'cmt_blogs' => array(
'className' => 'CmtBlog',
'conditions' => 'mostrar = "s"',
'order' => 'data_hora DESC'));

var $belongsTo = array('atr_blogs' => array(
'className' => 'AtrBlog',
'order' => 'id ASC'
));

 

o erro é o seguinte:

Warning (512): SQL Error: 1052: Column 'id' in order clause is ambiguous [COREcakelibsmodeldatasourcesdbo_source.php, line 549]

Query: SELECT `Blog`.`id`, `Blog`.`atr_blogs_id`, `Blog`.`titulo`, `Blog`.`titulo_slug`, `Blog`.`post`, `Blog`.`data-hora`, `atr_blogs`.`id`, `atr_blogs`.`nome`, `atr_blogs`.`descricao`, `atr_blogs`.`email`, `atr_blogs`.`twitter` FROM `blogs` AS `Blog` LEFT JOIN `atr_blogs` AS `atr_blogs` ON (`Blog`.`atr_blogs_id` = `atr_blogs`.`id`) WHERE 1 = 1 ORDER BY `id` DESC, `id` ASC

Query: SELECT COUNT(*) AS `count` FROM `blogs` AS `Blog` LEFT JOIN `atr_blogs` AS `atr_blogs` ON (`Blog`.`atr_blogs_id` = `atr_blogs`.`id`) WHERE 1 = 1 ORDER BY `id` ASC

Query: SELECT `Blog`.`id`, `Blog`.`atr_blogs_id`, `Blog`.`titulo`, `Blog`.`titulo_slug`, `Blog`.`post`, `Blog`.`data-hora`, `atr_blogs`.`id`, `atr_blogs`.`nome`, `atr_blogs`.`descricao`, `atr_blogs`.`email`, `atr_blogs`.`twitter` FROM `blogs` AS `Blog` LEFT JOIN `atr_blogs` AS `atr_blogs` ON (`Blog`.`atr_blogs_id` = `atr_blogs`.`id`) WHERE 1 = 1 ORDER BY `id` desc, `id` ASC LIMIT 3

 

alguem sabe me dizer como resolver isso ?

obrigado, desde já Imagem Postada

 

 

Teu problema tá nesses Order ali cara, tá dizendo que o ID é ambíguo. Tá sendo usado dois campos com o mesmo nome.

 

 

 

Tem o mesmo nome, mas são de classes diferentes...

Tentei fazer o sugeriu, mas continuou não funcionando Imagem Postada

 

Quando eu tiro o $belongsTo, funciona tudo certo.

o que pode ser isso ??

Compartilhar este post


Link para o post
Compartilhar em outros sites

atr_blogs e img_blogs são tabelas no seu banco né?

 

posta as tabelas pra eu dar uma olhada..

 

 

 

Mas ele tá se perdendo ali no order..

Acho que é como você estivesse dizendo pro SQL fazer " ORDER BY id ASC, id DESC "

Pelo que eu entendi, teria que ser " ORDER BY img_blogs.id ASC, atr_blogs.id DESC "

 

 

::edit::

Inclusive no SQL que você postou ele faz exatamente isso que eu disse "" ORDER BY id ASC, id DESC "".

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mesmo tirando as orndenações, dá erro.

 

tabela atr_blogs:

CREATE TABLE `atr_blogs` (
`id` BIGINT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`nome` VARCHAR(255) NOT NULL,
`descricao` BLOB NOT NULL,
`email` VARCHAR(255) NOT NULL,
`twitter` VARCHAR(255) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE INDEX `id` (`id`)
)
ENGINE=MyISAM
ROW_FORMAT=DEFAULT
AUTO_INCREMENT=2

 

tabela blogs:

CREATE TABLE `blogs` (
`id` BIGINT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`atr_blogs_id` BIGINT(11) UNSIGNED NOT NULL DEFAULT '0',
`titulo` VARCHAR(255) NOT NULL,
`titulo_slug` VARCHAR(255) NOT NULL,
`post` BLOB NOT NULL,
`data-hora` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE INDEX `id` (`id`),
UNIQUE INDEX `titulo_slug` (`titulo_slug`)
)
ENGINE=MyISAM
ROW_FORMAT=DEFAULT
AUTO_INCREMENT=21

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mesmo tirando as orndenações, dá erro.

 

tabela atr_blogs:

CREATE TABLE `atr_blogs` (
`id` BIGINT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`nome` VARCHAR(255) NOT NULL,
`descricao` BLOB NOT NULL,
`email` VARCHAR(255) NOT NULL,
`twitter` VARCHAR(255) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE INDEX `id` (`id`)
)
ENGINE=MyISAM
ROW_FORMAT=DEFAULT
AUTO_INCREMENT=2

 

tabela blogs:

CREATE TABLE `blogs` (
`id` BIGINT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`atr_blogs_id` BIGINT(11) UNSIGNED NOT NULL DEFAULT '0',
`titulo` VARCHAR(255) NOT NULL,
`titulo_slug` VARCHAR(255) NOT NULL,
`post` BLOB NOT NULL,
`data-hora` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE INDEX `id` (`id`),
UNIQUE INDEX `titulo_slug` (`titulo_slug`)
)
ENGINE=MyISAM
ROW_FORMAT=DEFAULT
AUTO_INCREMENT=21

 

Tuas tabelas estão com ENGINE=MyISAM

Tem que ser InnoDB!

 

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

mesmo mudando,

ainda está dando os mesmos erros !

Resolvido.

Estava aparecendo "id ambíguo" porque não foi definido de onde vinha o id da paginação e do findAll no controller.

 

 

Valeu pela ajuda lucasvocals Imagem Postada

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.