PHP-Hispano.net Comunidad hispana de desarrollo web

Contacto | #php_para_torpes | Enlázanos | ¿Quiénes somos?

16 usuarios Online (0)

Darse de alta en la web | Recuperar password   
Inicio / Foros / MySQL / Consulta MySQL con error

Consulta MySQL con error

5 respuestas 956 visitas Categoría MySQL

Consulta MySQL con error

Avatar de tafusas
* * * * * * *

(Nivel 2 - 35 posts)

#0 Offline tafusas Usuario 29 dic 08
hola, estoy practicando con las base de datos y trato de hacer un buscador, les cuento tengo 4 tablas, estas son
noticias_iz, noticia_ce, noticia_de. cada tabla contiene 3 campos, titulo, noticia y foto,
La cuarta tabla se llama Categorias y ahi tengo registros insertados de las otras tres tablas...
Cuando hago la consulta SQL en modo avanzado en Dreamweaver me sale error, SELECT *
FROM noticia_ce, noticia_de, noticia_iz, asi es como empiezo la consulta... si alguno sabe o podria explicarme un poco como generar la consulta estare muy agradecido

Re: Consulta MySQL con error

Avatar de osmodiars
* * * * * * *

(Nivel 2 - 162 posts)

#1 Offline osmodiars Usuario 29 dic 08
Hola, necesitas especificar que campos seleccionas de cada tabla y tambien aveces conviene darle un "Alias" al campo por si se repiten los nombres de los campos. El "Alias" lo haces escribiendo AS. Tu consulta podria ser algo como esto

SELECT noticia_ce.titulo AS titulo_ce, noticia_de.titulo AS titulo_de FROM noticia_ce, noticia_de

Espero que te haya servido. saludos

quizás algo más

Avatar de jurena
* * * * * * *

(Nivel 7 - 1622 posts)

#2 Offline jurena Moderador 29 dic 08
tafusas,
estoy de acuerdo con osmodiars en que parte del problema puede estar en la confusión que se produce al usar los mismos nombres de campo para distintas tablas, y que la solución más breve para eso es usar alias, pero no sé si ese será el único problema. Deberías decirnos los nombres de los campos de la tabla categorías y cómo está relacionada con las otras tablas, si es que lo está. También deberías ponernos un ejemplo de qué datos buscas, cómo los tienes guardados, qué quieres mostrar y el texto completo de tu consulta, la que falla o da error.
Piensa que si las tablas no están relacionadas habrá que hacer una consulta con UNION ALL, pero antes deberás darnos algunos datos más, si es que sigues sin sacar lo que quieres.

Consulya SQL con error

Avatar de tafusas
* * * * * * *

(Nivel 2 - 35 posts)

#3 Offline tafusas Usuario 30 dic 08
hola chicos, les paso la consulta y todo detallado..
solamente en la tabla noticia_iz hay un registro con tres campos (titulo, noticia, foto), las tablas noticia_ce y noticia_de tienen los mismos campos..Datos de las tablas:
noticia_iz CAMPOS: titulo (araña), noticia (araña que muerde) y la foto
noticia_ce CAMPOS: titulo (gato) noticia (gato que baila) y la foto
noticia_de CAMPOS: titulo (loro) noticia (loro super feo) y lafoto
la ultima tabla se llama categorias, tiene su campo id y su campo categorias con tres registros, estos son (araña, gato, loro), las tablas no estan indexadas o vinculadas..
Consulta:
SELECT noticia_ce.titulo, noticia_ce.noticia, noticia_ce.foto
FROM noticia_ce
WHERE noticia_ce.titulo AND noticia_ce.noticia AND noticia_ce.foto
esta es la primera consulta que hago con la tabla noticia_ce, pincho en el boton prueba y no me muestra datos
Espero que les sirva, les deseo muy feliz año nuevo..saludos

falta algo

Avatar de jurena
* * * * * * *

(Nivel 7 - 1622 posts)

#4 Offline jurena Moderador 30 dic 08
No nos dices lo que quieres buscar. ¿Qué quieres mostrar exactamente, todos los registros, aquellos que tengan que ver con un animal, o qué?
De todas formas, observa que por lo único que puedes unir las tablas con la tabla categorias es por titulo-categorias. Puedes hacer dos cosas.
Si quieres ver todos los datos de las tres tablas, debes usar union all
(SELECT titulo, noticia, foto FROM noticia_iz)
UNION ALL
(SELECT titulo, noticia, foto FROM noticia_ce)
UNION ALL
(SELECT titulo, noticia, foto FROM noticia_de)

También podrías hacer un inner join, en realidad tres, con la tabla categorías, pero eso no parece muy recomendable . Me explicaré. A mí no me gusta mucho esa estructura mediante tres tablas para el tipo de datos que tienes. Yo usaría sólo una tabla noticias y en ella añadiría un campo para izquierda, derecha y centro (bastará un carácter I, C, D; o si lo prefieres un número 0,1,2). Luego en el select haría un inner join de esa tabla con categorías por el campo que los relaciona titulo-categorias. Esa es, creo, una buena solución, que te permitirá trabajar con la base mucho mejor, salvo que haya alguna otra diferencia entre las tres tablas que no nos hayas dicho. Luego podrás hacer casi todo lo que se te ocurra con esos datos. Otra cosa que no entiendo bien es por qué relacionas titulo y categorias. Yo añadiría un campo numérico llamado categoría en la tabla noticias que fuera Foreign Key de la Primary Key, es decir, el mismo número que el id de esa tabla categorias, porque no creo que siempre coincidan titulo, que será el título abreviado, con categoría, ¿o sí? Ah, y también un campo (tipo date) para la fecha de la noticia

tabla noticias
noticias_id, titulo, noticia, foto, categoria, posicion, fecha
1,Perro en acción, galgo corriendo en los llanos de Castilla-La Mancha,direcciondelafoto,3, 0, 2208-12-11
2,Araña peligrosa, tarántula acercándose a su presa,direcciondelafoto,1,1, 2007-11-15
3,Gato,siamés jugando con un ovillo,direcciondelafoto,2,2,2008-04-30


tabla categorias
categorias_id, categoria
1,araña
2,gato
3,perro

Pero esto es sólo una sugerencia, y tú tendrás que decidir. Naturalmente, luego tendrás que indexar el campo categoria de noticias.

Re: Consulta MySQL con error

Avatar de osmodiars
* * * * * * *

(Nivel 2 - 162 posts)

#5 Offline osmodiars Usuario 30 dic 08
Hay muchas soluciones a este problema, pero la mejor de todos es como dice jurena, crear una sola tabla y administrar las noticias por categorias.

Yo solo estoy de acuerdo en usar INNER JOIN si usamos un motor de almacenamineto innodb, ya que asi tendremos menos problemas con keys e ids inexistentes.

Responder mensaje

Para poder participar debes estar registrado e identificado. Si no estás registrado como usuario de PHP-Hispano, :: Registrar ::
Login / Password   

php-hispano.net 2002 - 2010 | XHTML 1.0
Datos Legales | Webmaster