ColdFusion - Ayuda con programa simple en ColdFusion

 
Vista:

Ayuda con programa simple en ColdFusion

Publicado por Alejandro de la Rosa (5 intervenciones) el 03/06/2010 01:20:06
Que tal!

Tengo un pequeno problema, bastante tonto, pero no se como hacer esto, puesto me estoy iniciando en la programacion.

Tengo el siguiente codigo:

<cfquery name="test" datasource="test">
select companies.company, staff.first, staff.last
from staff, companies
where staff.idcompany = companies.idcompany
order by companies.company, staff.first, staff.last
</cfquery>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Users Report</title>
</head>
<body>
<h2>Users</h2>
<cfoutput query="test">
<br><b>#test.company#</b>
<br>#test.first#
,#test.last#<br><br>
</cfoutput>
</body>
</html>

Que me da el siguiente resultado:

Users

GT (en negritas)
Bernardo ,del Bosque

GT (en negritas)
Bill ,Colton

GT (en negritas)
Chuck ,Norris

GT (en negritas)
Paul ,Estrada

IBM (en negritas)
Elsa ,Martinez

IBM (en negritas)
John ,Doe

IBM (en negritas)
Laura ,Alanis

IBM (en negritas)
Sally ,Smith

Quisiera que que solo me mostrara el GT una vez, e IBM una sola vez.

Creo que se puede hacer en el query pero no estoy seguro alguien sabe algo al respecto?

Muchas gracias por sus atenciones.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Mostrar empresas una sola vez y enumerar empleados

Publicado por Alejandro (108 intervenciones) el 14/09/2023 19:57:37
Hola, tocayo.

Para lograr que se muestre el nombre de la empresa solo una vez y luego se enumeren los empleados correspondientes, puedes utilizar una variable de control en tu bucle `<cfoutput>`. Aquí hay una forma de hacerlo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<cfquery name="test" datasource="test">
SELECT companies.company, staff.first, staff.last
FROM staff
INNER JOIN companies ON staff.idcompany = companies.idcompany
ORDER BY companies.company, staff.first, staff.last
</cfquery>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <title>Users Report</title>
</head>
<body>
    <h2>Users</h2>
    <cfoutput query="test" group="company">
        <h3>#test.company#</h3>
        <ul>
            <cfoutput>
                <li>#test.first#, #test.last#</li>
            </cfoutput>
        </ul>
    </cfoutput>
</body>
</html>

Aquí se ha utilizado la opción `group="company"` en el `<cfoutput>` para agrupar los resultados por el nombre de la empresa. Esto hará que el nombre de la empresa se muestre una sola vez y luego se enumeren los empleados correspondientes a esa empresa dentro de una lista (`<ul>`).

Con esta estructura, obtendrás un resultado similar a:

1
2
3
4
5
6
7
8
9
10
11
12
13
Users
 
GT (en negritas)
- Bernardo, del Bosque
- Bill, Colton
- Chuck, Norris
- Paul, Estrada
 
IBM (en negritas)
- Elsa, Martinez
- John, Doe
- Laura, Alanis
- Sally, Smith

De esta manera, los empleados de cada empresa se agruparán bajo el nombre de la empresa, y solo se mostrará el nombre de la empresa una vez.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar