Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia, pessoal.
Eu estou com um problema que a início achei que seria simples de se resolver, mas não estou conseguindo.
Tenho as seguintes tabelas:
users table
id INT
name VARCHAR
admins table
id
name VARCHAR
Eu preciso fazer um select nas duas tabelas e ordenar os resultados intercaladamente. Ou seja, eu preciso que para cada 10 registros da tabela users, apareça 1 registro da tabela admins. O Resultado do select ficando algo como:
----------------------------------
id, name, type
----------------------------------
1, Fulano, user
2, Fulano, user
3, Fulano, user
4, Fulano, user
5, Fulano, user
6, Fulano, user
7, Fulano, user
8, Fulano, user
9, Fulano, user
10, Fulano, user
1, Sicrano, admin
11, Fulano, user
12, Fulano, user
.....
O que eu já tentei:
SET @number := 0;
SELECT
@number := IF(@number = 10, 10, @number+1) AS number,
id,
name,
'user' AS type
FROM users
UNION
SELECT
@number := 0 AS number,
id,
name,
'admin' AS type
FROM admins
ORDER BY IF(number = 10, type = 'admin', type = 'user') DESC;
Eu sei que a lógica está errada e algo faltando, mas não consigo descobrir a solução.
Alguém tem alguma luz?
Motta, não entendi. Pode elaborar?
Abs
--1
select 'u' table,id,name from USERS
union
select 'a' table,id,name from admins
--2
select 'u' table,round(id/10) x,name from USERS
union
select 'a' table,round(id/10) x,name from admins
--3
select x , table, name
from
(select 'u' table,ROUND(id/10) X,name from USERS
union
select 'a' table,ROUND(id/10) X,name from ADMINSObrigado pelo feedback, Motta!
Só não entendi a lógica do que você tentou fazer, nem consegui fazer seu exemplo funcionar.
Não posso usar o ID como referência ao número do registro, a coluna não é sequencial ou pode nem mesmo ser numérica, só usei como exemplo. (por isso setei a variável no começo do meu exemplo)
Também não vejo como a divisão deveria resultar na ordenação correta. Eu tentei utilizar o operador de módulo (%) em outras tentativas, mas também não consegui resultado algum.
[]'s
Supos um campo ordenado .
Dividindo por dez e arredondando temos grupos sequenciais.
Não tive como testar mas creio que funcione.
gere sequencias separdas paras as tabelas
1
2
3
4
9
10
11
12
1
2
3
4
9
10
11
12
Faça o "trunc) por 11
1 0
2 0
3 0
4 0
9 0
10 0
11 1
12 1
Use este trunc para ordenar