Ir para conteúdo
Fórum Script Brasil
  • 0

Select com uma variável dependendo de outra


rocosta89

Pergunta

Boa tarde,

Preciso de uma ajuda, não sou especialista em Php e Mysql, e estou com dificuldades para resolver o problema abaixo:

Tenho 3 tabelas no mysql (form, calls, lista_ven), a primeira tabela me mostra o id da ligação, pegando esse id e buscando na segunda tenho o id do vendedor, pegando esse id do vendedor e buscando na terceira tabela descubro o nome do vendedor,

Qual a melhor forma para o php abaixo?

Gostaria que ficasse assim

Id_lig id_vend name

38 6 Jose

<?php
$con=mysqli_connect("localhost","root","xxxxxxxx","xxxx_xxxx");
// Check connection
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$result1 = mysqli_query($con,"select id_lig from form where value like '%venda%';");
$result2 = mysqli_query($con,"select id_ven from calls where id_lig like "%$result1%";");
$result3 = mysqli_query($con,"select name from lista_vend where id like "%$result2%";");
while($row = mysqli_fetch_array($result1, $result2, $result3)) {
echo $row['id_lig']. " " . ['id_ven']. " " . ['name']. " ";
echo "<br>";
}
mysqli_close($con);
?>
Agradeço a ajuda!
Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0
$result1 = mysqli_query($con,"select distinct a.id,b.id_ven_lig, c.name from form a, calls b, lista_vend c  where a.value like '%venda%' and a.id=b.id_ven and b.id_lig=c.id");

tenta aí, se não der certo, coloque a estrutura das tabelas aqui que fica mais fácil de analisar

Link para o comentário
Compartilhar em outros sites

  • 0
Não consegui chegar no resultado esperado, usando conforme abaixo:
select distinct a.id_calls,b.id_agent, c.name from form_data_recolected a, calls b, agent c where a.value like '%venda%' and a.id_calls=b.agent and b.id=c.id
Para chegar no nome do vendedor faço o processo abaixo, porém manualmente, (fiz um backup e o nome das colunas voltaram como o original)
mysql> select id_calls from form_data_recolected where value like '%venda%';
+----------+
| id_calls |
+----------+
| 37 |
+----------+
1 row in set (0.00 sec)
mysql> select id_agent from calls where id=37;
+----------+
| id_agent |
+----------+
| 4 |
+----------+
1 row in set (0.00 sec)
mysql> select name from agent where id=4;
+-------+
| name |
+-------+
| A5000 |
+-------+
1 row in set (0.00 sec)
Obrigado pela resposta,
Link para o comentário
Compartilhar em outros sites

  • 0
id_calls da tabela 1 é o mesmo valor encontrado em id da tabela 2, sabendo disso preciso através do id_agent da tabela 2 encontrar o name da tabela 3
mysql> desc form_data_recolected;
+---------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| id_calls | int(10) unsigned | NO | MUL | NULL | |
| id_form_field | int(10) unsigned | NO | MUL | NULL | |
| value | varchar(250) | NO | | NULL | |
+---------------+------------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)
mysql> desc calls;
+----------------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------------------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| id_campaign | int(10) unsigned | NO | MUL | NULL | |
| phone | varchar(32) | NO | | NULL | |
| status | varchar(32) | YES | | NULL | |
| uniqueid | varchar(32) | YES | | NULL | |
| fecha_llamada | datetime | YES | | NULL | |
| start_time | datetime | YES | MUL | NULL | |
| end_time | datetime | YES | | NULL | |
| retries | int(10) unsigned | NO | | 0 | |
| duration | int(10) unsigned | YES | | NULL | |
| id_agent | int(10) unsigned | YES | MUL | NULL | |
| transfer | varchar(6) | YES | | NULL | |
| datetime_entry_queue | datetime | YES | MUL | NULL | |
| duration_wait | int(11) | YES | | NULL | |
| dnc | int(1) | NO | | 0 | |
| date_init | date | YES | | NULL | |
| date_end | date | YES | | NULL | |
| time_init | time | YES | | NULL | |
| time_end | time | YES | | NULL | |
| agent | varchar(32) | YES | | NULL | |
| failure_cause | int(10) unsigned | YES | | NULL | |
| failure_cause_txt | varchar(32) | YES | | NULL | |
| datetime_originate | datetime | YES | | NULL | |
| trunk | varchar(20) | YES | | NULL | |
+----------------------+------------------+------+-----+---------+----------------+
24 rows in set (0.00 sec)
mysql> desc agent;
+---------------+----------------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+----------------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| type | enum('Agent','SIP','IAX2') | NO | | Agent | |
| number | varchar(40) | NO | | NULL | |
| name | varchar(250) | NO | | NULL | |
| password | varchar(250) | NO | | NULL | |
| estatus | enum('A','I') | YES | | A | |
| eccp_password | varchar(128) | YES | | NULL | |
+---------------+----------------------------+------+-----+---------+----------------+
7 rows in set (0.00 sec)
Editado por rocosta89
Link para o comentário
Compartilhar em outros sites

  • 0
$result1 = mysqli_query($con,"
select distinct a.id,b.id_agent, c.name 
from form_data_recolected a, calls b, agent c 
where a.value like '%venda%' 
and a.id_calls=b.id 
and b.id_agent=c.id
");

Deve funcionar. Senão, dá uma adaptada aos campos das tabelas que funciona.

Link para o comentário
Compartilhar em outros sites

  • 0

Boa noite Sandro,

Você consegue me ajudar em só mais um detalhe,

Como insiro o count junto com o distinct ?

No exemplo abaixo que você me ajudou imprimiu 2 vendas com o name a5000 como posso fazer para contar a quantidade de vendas por nome?

+----+----------+-------+
| id | id_agent | name |
+----+----------+-------+
| 43 | 4 | A5000 |
| 46 | 4 | A5000 |
+----+----------+-------+
2 rows in set (0.00 sec)

Muito obrigado!

Link para o comentário
Compartilhar em outros sites

  • 0

Bom dia,

Sinceramente não saberia dizer como juntar tudo, mas eu faria outra select do tipo:

$result_vendas_por nome = mysqli_query($con,"
select distinct c.name as nome, count(*) as vendas
from form_data_recolected a, calls b, agent c 
where a.value like '%venda%' 
and a.id_calls=b.id 
and b.id_agent=c.id
group by c.name
");
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...