• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

7 mensagens neste tópico

Preciso de fazer uma instrução SQL que contenha mais do que um SELECT.

O mais próximo que encontrei do que pretendo foi o seguinte:

SELECT id_agencia, nome_agencia FROM agencias UNION SELECT id_destino, nome_destino FROM destinos

Mas ele assim irá juntar das da 2a statement aos da 1a. O que pretendia era um resultado tipo :

id_agencia | nome_agencia | id_destino | nome_ destino

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pdes usar queries aninhadas, por exemplo:

SELECT *

FROM agencias

WHERE id_agencia IN (

                   SELECT id_agencia

                   FROM destinos )

                   

Não sei se isto servirá para o teu caso, já que não dizes bem a constituição das tabelas.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Para perceber melhor o código PHP está em baixo:

onde tenho as variaveis $resultado_a, $resultado_d, $resultado_c, queria uma variável $resultado que tive esses 3 SELECTS juntos que alimentam 3 pup-ups de um formulario de inserir dados.

Como pode ver precisava de um variável $resultado que tivesse os 3 SELECTS para alimentar o ciclo while.

Help  :wallbash:

<?php
header('Content-type:text/xml');
echo '<?xml version="1.0" encoding="ISO-8859-1"?>'."\n";
// XSL
echo '<?xml-stylesheet type="text/xsl" href="venda_inserir.xsl"?>'."\n";
// XSD
echo "<vendas xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:noNamespaceSchemaLocation=\"venda.xsd\">"."\n";

// ligacao a BD
$ligacao = mysql_connect("localhost","root","");								
if (!$ligacao){ die('A ligação ao servidor MySQL não foi estabelecida.<br>aconteceu o erro: ' . mysql_error());};
mysql_select_db("tw_agencia", $ligacao);
// pesquisa BD	
$resultado_a = mysql_query("SELECT id_agencia, nome_agencia FROM agencias");
$resultado_d = mysql_query("SELECT id_destino, nome_destino FROM destinos");
$resultado_c = mysql_query("SELECT id_cliente, nome_cliente FROM clientes");
// resultados
while($row_v = mysql_fetch_array($resultado)){	
	echo "\t<venda>\n";
	echo "\t\t<agencia id=\"" . $row_v["id_agencia"] . "\">" . $row_v['nome_agencia']. "</agencia>\n";
	echo "\t\t<destino id=\"" . $row_v["id_destino"] . "\">" . $row_v['nome_destino']. "</destino>\n";
	echo "\t\t<cliente id=\"" . $row_v["id_cliente"] . "\">" . $row_v['nome_cliente']. "</cliente>\n";	
	echo "\t\t<passagens>" . $row_v["passagens"] . "</passagens>\n";
	echo "\t\t<partida>" . $row_v["partida"] . "</partida>\n";
	echo "\t\t<chegada>" . $row_v["chegada"] . "</chegada>\n";
	echo "\t</venda>\n";	
}
// fecha ligacao a BD
mysql_close($ligacao);
?>
</vendas>

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Queres algo como?

Select *
From Agencias
Cross Join Destinos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não não isso, era algo do genero (em termos logicos):

(SELECT id_agencia, nome_agencia FROM agencias) AND (SELECT id_destino, nome_destino FROM destinos) AND (SELECT id_cliente, nome_cliente FROM clientes)

Obrigado pela proposta na mesma ;)

Queres algo como?

Select *
From Agencias
Cross Join Destinos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A menos que exista alguma relação entre as tabelas, tens de fazer 3 consultas diferentes com os respectivos ciclos.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Talvez fosse mais fácil se dissesses como funciona o teu sistema.

Porque assim não dá bem para entender o que queres. No entanto, se o que queres é que mostre por exemplo a viagem que um utilizador vai fazer, falta-te a clausula WHERE para poderes relacionar os dados de uma tabelas com os dados de outra.

Também podes fazer uma única consulta, por exemplo:

$consulta = mysql_query("SELECT agencias.id_agencia, agencias.nome_agencia, destinos.id_destino, destino.nome_destino, clientes.id_cliente, clientes.nome_cliente FROM agencias, destinos, clientes WHERE ...");

Depois, no WHERE colocas os campos que relacionam umas tabelas com as outras.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora