Como fazer um SELECT como uma subquery (aninhado) para o MySQL?
Gostaria de saber como faço um select aninhado? Eu vi alguns exemplos na internet mas não funcionaram, exemplo:
SELECT campo1, campo2, (SELECT * FROM subcategoria) FROM categoria
comentários (0)
suspender
Lista de Respostas:
23/07/2009 9:01am
(~15 anos atrás)
(~15 anos atrás)
SELECT cat.campo1, cat.campo2, (SELECT * FROM subcategoria sub where sub.codigo = cat.fk_subcodigo ) FROM categoria cat
Seria isso mas depende da versão do mysql acho que isso o é possivel a partir da versão 5.
qualquer duvida manda ae.
Carlos Rodrigues
Seria isso mas depende da versão do mysql acho que isso o é possivel a partir da versão 5.
qualquer duvida manda ae.
Carlos Rodrigues
21/07/2009 2:46pm
(~15 anos atrás)
(~15 anos atrás)
Tulio valeu por responder, mais eu quero saber por curiosidade e não por nessidade, pq eu sei chamar duas tabelas com JOIN, mais ainda continua a duvida se da para fazer o select aninhado.
mais valeu.
mais valeu.
21/07/2009 2:48pm
(~15 anos atrás)
(~15 anos atrás)
SELECT campo1_da_tbl_categoria, campo2_da_tbl_categoria, campo1_da_tbl_subcategoria, campo2_da_tbl_subcategoria FROM categoria c, subcategoria sb WHERE c.codigo_tbl_categoria = sb.codigo_tbl_subcategoria;
Tipo no caso do categoria c e subcategoria sb, é para o caso de se vc estiver
usando o mesmo nome em tabelas distintas, por ex. codigo em duas tabelas,
ai vc faria o WHERE usando o apelido dado a tabela.
WHERE c.codigo = sb.codigo;
21/07/2009 2:50pm
(~15 anos atrás)
(~15 anos atrás)
tp, pelo que sei, e fiz alguns testes aqui, ele soh executa se o select retornar
apenas uma linha, oq é a mesma coisa que igualar.
Hehehehe, não sei não meu, abraçoss,
apenas uma linha, oq é a mesma coisa que igualar.
Hehehehe, não sei não meu, abraçoss,
21/07/2009 2:53pm
(~15 anos atrás)
(~15 anos atrás)
Eu acho que é impossivel select aninhados em mysql.
Quem chegar com resposta é fera rsrsrss!
Quem chegar com resposta é fera rsrsrss!
21/07/2009 3:03pm
(~15 anos atrás)
(~15 anos atrás)
Tu já usou UNION?
acho que da no mesmo não?
acho que da no mesmo não?
23/07/2009 3:28pm
(~15 anos atrás)
(~15 anos atrás)
Carlos eu tendei mais não obteve sucesso
eu fiz que vc me pediu
SELECT c.id, c.categoria, (SELECT * FROM subcategoria AS s WHERE s.id_categoria = c.id) FROM categoria AS c WHERE c.id = '$id'
da esse erro
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\wamp\www\braganca\teste1.php on line 5
mais valeu por responder
eu fiz que vc me pediu
SELECT c.id, c.categoria, (SELECT * FROM subcategoria AS s WHERE s.id_categoria = c.id) FROM categoria AS c WHERE c.id = '$id'
da esse erro
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\wamp\www\braganca\teste1.php on line 5
mais valeu por responder
25/04/2011 9:00pm
(~13 anos atrás)
(~13 anos atrás)
Sei que foi postado a muito tempo mas p/ consultas posteriores vou responder aqui ao tópico:
É claro que as tabelas são ficctícias e bem bizarras, mas a idéia fica visível. Você coloca o seu subselect no código e define um nome p/ o resultado através do AS.
Utilizo o Mysql 5 e funciona normalmente.
SELECT noticia, (SELECT nomecategoria FROM categoria WHERE iddepartamento = noticiadepartamento LIMIT 0, 1) AS odepartamento FROM noticias;
É claro que as tabelas são ficctícias e bem bizarras, mas a idéia fica visível. Você coloca o seu subselect no código e define um nome p/ o resultado através do AS.
Utilizo o Mysql 5 e funciona normalmente.
21/07/2009 2:34pm
(~15 anos atrás)
(~15 anos atrás)
Query Aninhada para popular uma tabela extraindo os dados de outra:
Tente assim:
Ou, use sem a condição.
---------------------------
Acredito que seria melhor fazer uma tabela apenas para as categorias e subcategorias, e fazer um campo onde informaria em qual categoria ela se liga.
tipo assim:
Ai no caso, as categorias que tem ligada_a_cat = 0 são categorias raiz,
e as que tem > 0 são subcategoria da categoria em si.
INSERT INTO nomedatabela(SELECT codigo, nome FROM nome_da_tabela_origem);
SELECT campo1_da_tbl_categoria, campo2_da_tbl_categoria, campo1_da_tbl_subcategoria, campo2_da_tbl_subcategoria FROM categoria c, subcategoria sb WHERE codigo_tbl_categoria = codigo_tbl_subcategoria;
---------------------------
Acredito que seria melhor fazer uma tabela apenas para as categorias e subcategorias, e fazer um campo onde informaria em qual categoria ela se liga.
tipo assim:
CREATE TABLE `categoria` ( `codigo_cat` int(9) NOT NULL auto_increment, `nome_cat` varchar(155) NOT NULL, `ligada_a_cat` int(9) NOT NULL, PRIMARY KEY (`codigo_cat`) ) ENGINE=MyISAM;
e as que tem > 0 são subcategoria da categoria em si.
21/07/2009 2:36pm
(~15 anos atrás)
(~15 anos atrás)
SELECT campo1_da_tbl_categoria, campo2_da_tbl_categoria, campo1_da_tbl_subcategoria, campo2_da_tbl_subcategoria FROM categoria c, subcategoria sb WHERE codigo_tbl_categoria = codigo_tbl_subcategoria;
21/07/2009 2:41pm
(~15 anos atrás)
(~15 anos atrás)
Acredito que vc já tenha uma conexão com o banco de dados,
coloco o código abaixo dentro de algum arquivo .php e execute;
Exemplo de conexão com banco de dados. crie um arquivo com o nome de conecta.php
e inclua dentro de onde vc for utilizar o banco da seguinte forma.
Código para conexão com banco de dados.
coloco o código abaixo dentro de algum arquivo .php e execute;
mysql_query("CREATE TABLE `categoria` ( `codigo_cat` int(9) NOT NULL auto_increment, `nome_cat` varchar(155) NOT NULL, `ligada_a_cat` int(9) NOT NULL, PRIMARY KEY (`codigo_cat`) ) ENGINE=MyISAM;");
Exemplo de conexão com banco de dados. crie um arquivo com o nome de conecta.php
e inclua dentro de onde vc for utilizar o banco da seguinte forma.
<? include("conecta.php"); ?>
<?php define('DB_HOST', 'localhost'); // Host do banco de dados define('DB_USER', 'nome_do_usuario'); // Nome de usuario do mysql define('DB_PASS', 'senha'); // Password do mysqç define('DB_NAME', 'nome_do_banco'); // Nome do banco de dados if(!@mysql_connect(DB_HOST,DB_USER,DB_PASS)){ echo "<center><font size=-1 color=#ff0000>Verifique a conexão! erro!</font></center><br>"; return(false); exit(); } if(!@mysql_select_db (DB_NAME)){ echo "<center><font size=-1 color=#ff0000>Verifique o banco de dados!</font></center>"; return(false); exit(); } if(mysql_connect(DB_HOST,DB_USER,DB_PASS) && mysql_select_db (DB_NAME)){ return(true); } ?>