Mostrar en un DBGRID Relacion Muchos Muchos
Es un juego de rol...
El Nivel de habilidades de los personajes son: id=descripcion 1=Malo 2=Regular 3=Bueno tanto el numero como su descripcion me son necesarios guardar en la base de datos y por lo tanto uso dos tablas: TABLA 1 personajes: id_personaje (Entero) nombre (Cadena) id_habilidad_volar (Entero) id_habilidad_saltar (Entero) id_habilidad_correr (Entero) TABLA 2 habilidades: id_habilidad (Entero) descripcion (Cadena) y armo un DBGrid, y quiero que me muestre el personaje, y el nivel de su habilidad: El DBGrid se ve asi: ||| Personajes ||| Habilidad Volar ||| ||| Mago ||| Regular ||| ||| Guerrero ||| Malo ||| ||| Hada ||| Bueno ||| Codigo: Código:
SELECT nombre, id_habilidad_volar, habilidades.descripcion ||| Personajes ||| Habilidad Volar ||| Habilidad Saltar ||| Habilidad Correr ||| ||| Mago ||| Regular ||| Malo ||| Bueno ||| ||| Guerrero ||| Malo ||| Bueno ||| Regular ||| ||| Hada ||| Bueno ||| Malo ||| Bueno ||| y aqui no se como plantearlo... la solucion rapida es usar un StringGrid y cargar los datos uno por uno XD pero creo que podria hacer una consulta SQL que me permitiera hacer esto en un solo paso. ¿Alguna Sugerencia? Gracias! |
Utiliza tres veces la tabla HABILIDADES en la SQL haciendo INNER JOIN con la tabla PERSONAJES, pero utilizando Alias junto a la tabla, para que la consulta salga correctamente.
De paso una una Alias para PERSONAJES (p).
|
Algo así:
Pruebalo, tal vez me de dejado algo... |
Probe utilizando alias, primero con uno y va bien:
Pruebo añadir una segunda habilidad y da error: El Error es: Cita:
|
¿Qué base de Datos utilizas?
¿Has probado a lanzar la consulta directamente a la Base de Datos? |
La base de datos esta hecha con MS Access 2003, corriendo Delphi 7 usando ADO.
Pero efectivamente la consulta funciona, porque la probe con MySQL (con PHP) y PySQLite (con Python) y da lo resultados que quiero... pero en Access no le encuentro la vuelta. :confused: |
Luego de mucho buscar consultas SQL en access encontre algo en este thread que me sirvio como guia para intentar resolver este tema.
La solucion era anidar los INNER JOIN con parentesis por la tanto la consulta queda asi:
Muchas Gracias Neftali por tu ayuda! |
La franja horaria es GMT +2. Ahora son las 21:03:23. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi