Ir para conteúdo

POWERED BY:

Arquivado

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

Thales Caricati

Colunas dinâmicas com MySQL?

Recommended Posts

Tenho a seguinte query:

 

SELECT 
   a.id, a.title,
   IF
   ( 
      a.type = 1 ,
      (SELECT id, image , name FROM users WHERE a.id = users.account_id),
      (SELECT id, image , name FROM clients WHERE a.id = clients.account_id)
   )

FROM 
      account a,
      messages m

WHERE
      m.account_id = ?
      AND
      m.account_id = a.id

 

 

Neste caso, funciona normalmente:

   IF
   ( 
      a.type = 1 ,
      (SELECT name FROM users WHERE a.id = users.account_id),
      (SELECT name FROM clients WHERE a.id = clients.account_id)
   ) AS name

 

Quando tento retornar mais de um resultado ocorre um erro:

   IF
   ( 
      a.type = 1 ,
      (SELECT id, name, image FROM users WHERE a.id = users.account_id),
      (SELECT id, first_name, last_name, image FROM clients WHERE a.id = clients.account_id)
   )

 

Preciso que esta query retorne algumas colunas dinamicamente dependendo de users e clients.

É possível fazer isso no MySQL?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Creio que este tipo de select só pode retornar um valor, em coluna e linha.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ou seis colunas em 2 selects, mas outra solução ruim ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenho uma conta universal (tabela accounts) e existem duas tabelas que referenciam elas sendo: clients e users. Users são pessoas responsáveis pelo sistema e clients são apenas clientes que usam o sistema.

 

Neste caso expecifico seria uma página de mensagens contento a foto e nome do usuário ou cliente referente a mensagem.

 

Exeplo do usuário:

array( 'user_name' , 'user_image' , 'message' , 'message_date' )

 

Exeplo do cliente:

array( 'first_name' , 'last_name' , 'image' , 'message' , 'message_date' )

 

Fui claro agora ou ainda está ruim?

Compartilhar este post


Link para o post
Compartilhar em outros sites

não consigo te ajudar com esse problema :/

nunca tive um problema desses pra resolver...

 

se você pudesse colocar uma coluna com nome de type na tabela account, você já ia saber se era um cliente ou um user, daí dispensaria o if(eu acho rsrs)..

Compartilhar este post


Link para o post
Compartilhar em outros sites

se você pudesse colocar uma coluna com nome de type na tabela account, você já ia saber se era um cliente ou um user, daí dispensaria o if(eu acho rsrs)..

 

Ele já faz isso

 

:thumbsup:

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.