Tengo dos tablas con un solo campo alfanumerico.
Quiero mostrar los registros de las dos tablas ordenados alfabeticamente.
¿Como se puede hacer?.
Salu2


| ||||
Hola Fr@Nc3$c0: Son dos tablas, y hay q mostrar los regs. de las dos. Las dos tablas tienen un solo campo. El select seria (salvo ideas mejores) select campo_tabla1,campo_tabla2 from tabla1,tabla2 order by ????????? Como es lógico, da un recordset de dos campos. Si se te ocurre algo ... ya sabes. Salu2 y gracias.
__________________ No es sabio el que sabe sino el que no sabe y quiere aprender |
| ||||
Tienen algo en común esas 2 tablas? el mismo nombre de columna? Prueba: SELECT campo.tabla1, campo.tabla2 FROM tabla ORDER BY <campo a ordenar> En campo a ordenar pondrías el campo que ordenas alfabeticamente... Lo que no se si se podran ordenar a la vez alfabeticamente, creo que uno u otro. Saludos.
__________________ Francesc Mula Calleja Hay mucho por ver todavía... |
| ||||
Fr@Nc3$c0: Se ordenaria por el campo q indiques en el order by solamente, y me interesa por los dos. No solo quiero sql, también, asp, ..., o lo que sea. Salu2
__________________ No es sabio el que sabe sino el que no sabe y quiere aprender |
| ||||
Hola: Ordenar los 2 a la vez, mezclando los datos, no se puede hacer, tienes que ordenarlos por uno u otro... Siento decirtelo, al menos no que yo sepa y te he estado buscando algo y es lo único que encontré. tendrías que "mezclar" las 2 tablas para conseguir algo así. Saludos.
__________________ Francesc Mula Calleja Hay mucho por ver todavía... |
| ||||
Gracias Fr@Nc3$c0: La verdad es q yo me imaginaba que con sql solo no se podía hacer, por eso abri el post en el foro de ASP, intentando que alguién me facilitara alguna forma de hacerlo. La única forma q a mi se me ha ocurrido es meter los registros en un array, y este ordenarlo, pero ... Salu2
__________________ No es sabio el que sabe sino el que no sabe y quiere aprender |
| ||||
Pues no se que decirte... Puedes crear un array, metes los valores correspondientes al primer recordset, entonces haces un redim del vector, insertando el resto de los valores. Pero una vez esto, ordenar el array no se si se podría, tendría que decirnoslo alguien, lo desconozco. Saludos.
__________________ Francesc Mula Calleja Hay mucho por ver todavía... |
| |||
has probado con una consulta de unión. select campo1 from tabla1 union campo1 tabla2 order by campo1. la salida es una sola columna ordenada alfabeticamente por campo1. en acces al menos si funciona. no se seguro si en asp también funcionan las consultas de unión, es cuestión de probar. saludos. |
| |||
la consulta de unión, al menos en access, ejecuta la primera parte de la sentencia select y después la siguiente parte hasta la siguiente cláusula union y así sucesivamente hasta el final. no hace falta que las tablas estén vinculadas ni que campo 1 sea del mismo tipo en las diferentes tablas. ten en cuenta que para filtrar debes poner las sentencias where antes de cada cláusula union, sinó no te filtrará bien, como si de consultas independientes se tratara. por cierto la sintaxis correcta es select campo1 from tabla1 union select campo1 from tabla2 habia olvidado el segundo select, perdón. Lo he probado y funciona perfecto. Los campos a listar no tienen porque ser del mismo tipo. La sentencia where debe estar antes de la siguiente cláusula union. La sentencia ORDER puede estar al final. si no se pone por defecto ordena ASC y también se puede utilizar DESC. Si los campos no tienen el mismo nombre puedes usar AS te adjunto código probado y que funciona. SELECT camp1 AS camp FROM tabla1 UNION SELECT camp2 AS camp FROM tabla2 ORDER BY camp; He tenido algun problema a la hora de incluirlas en alguns objetos de access porqué las consultas de unión tienen algunas limitaciones. Si tienes que utilitzarlas a menudo, leete con calma un buen manual de SQL y los manuales de access por pantalla. Espero que esta es la solución a tu duda y que te sirva. Saludos. Jaume Fugarolas. |
| ||||
Si lo que quieres es ordenar tu consulta por los dos campos que recuperas es posible, al menos en SQL Server y Oracle, seria algo asin lo he provado con Northwind asi que si quereis ver los resultados Ctrl+C y Crtl+V ![]() SELECTcu.City, em.LastName FROM Customers cu, Employees em ORDER BY cu.City asc, em.LastName desc sin problemas ![]() |
| ||||
Hola a todos: Lo primero, GRACIAS a todos por vuestra ayuda e interés. Lo segundo es pediros disculpas por no saber explicarme adecuadamente en su momento, pero era viernes, ... Viamo a ve si ahora lo hago bien. Tengo dos tablas. En cada una hay un campo id y un campo descripcion, necesitando los dos de cada una. Efectivamente, como habeis dicho, con select id,descripcion from tabla1 where ... union select ,descripcion from FamiliasEspeciales where ... order by descripcion conseguiría el resultado que quiero (el viernes fue mu malo), excepto por el siguiente detalle: Tengo mis descripciones e id, pero necesito saber de que tabla salen, puesto que dependiendo de su origen, mostraré la descripcion con un color u otro. ¿Como se os ocurre hacerlo, si se puede, con el select q he indicado antes, o con lo que sea?. Lo q pretendo es evitar tener que usar un array, q tendría q ser de 3 dimesiones (descripcion, id, origen). Salu2 y, nuevamente, MUUUUUUCHAS GRACIAS.
__________________ No es sabio el que sabe sino el que no sabe y quiere aprender |
| |||
Hola fjmasero: Tu problema se podría resolver devolviendo un literal extra en la consulta. Sería algo así como crear un "campo temporal", que utilizaríamos para conocer la procedencia de cada registro: (SELECT id, descripcion, 'tablaUno' AS tablaOrigen FROM tabla1 WHERE [...]) UNION (SELECT id, descripcion, 'tablaDos' AS tablaOrigen FROM tabla2 WHERE [...]) ORDER BY descripcion Tras ejecutar la consulta tendrías un recordset con 3 campos: id - descripcion - tablaOrigen Con lo cual ya podrías hacer lo que comentas con un simple y llano if:
Código:
Esta característica, poder devolver literales en una consulta, está contemplada en el estándar SQL/92, así que debería funcionar en cualquier SGBBDD serio.[...] while not rs.eof [...] if rs("tablaOrigen").value = "tablaUno" then [... lo que sea ...] else [... lo que sea ...] end if [...] rs.moveNext() wend [...] En ACCESS lo he probado y funciona sin problemas. Bueno, espero que te sirva de ayuda.
__________________ Un saludo, Alberto Última edición por alcarji; 27/08/2003 a las 03:23 |