Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Preguntas de MySQl y PHP

Estas en el tema de Preguntas de MySQl y PHP en el foro de Bases de Datos General en Foros del Web. bien quiero saber varias cositas: 1. COmoo funcionan los alias, para que sirve y que utilidad le puedo dar 2. Puedo hacer una consulta con ...
  #1 (permalink)  
Antiguo 26/12/2005, 13:26
Avatar de mafima  
Fecha de Ingreso: abril-2003
Ubicación: Medellin-Colombia
Mensajes: 1.109
Antigüedad: 21 años
Puntos: 24
Preguntas de MySQl y PHP

bien quiero saber varias cositas:

1. COmoo funcionan los alias, para que sirve y que utilidad le puedo dar

2. Puedo hacer una consulta con dos sentencias dentro del where que se contrapongan?

veamos, necesito contar la cantidad de preguntas y la cantidad de respuestas de una tabla, y se diferencia que es una pregunta o una respuesta por que hay un campo llamado tipo, si este es 0 es pregunta de lo contrario, es respuesta.

como hago esto?, me tocaraia hacer dos SELECT?

gracias
__________________
SEO en Medellin
  #2 (permalink)  
Antiguo 26/12/2005, 13:31
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 19 años, 1 mes
Puntos: 33
mmm creo que seria mejor que esta pregunta la hicieras en el foro de Base de datos...
  #3 (permalink)  
Antiguo 26/12/2005, 13:54
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
1) Los alias te sirven para hacer referencia a funciones que uses en una sentencia SQL .. o cuando tienes un par de campos de dos o más tablas que se repiten (el nombre) y quieres diferenciarlos a la hora de obtener cada resultado independiente.

Por ejemplo

SELECT COUNT(*) FROM tabla

en este caso .. usar o no un alias sería lo de menos . .pero si te digo que quiero otro campo de esa tabla ..

SELECT COUNT(*) as total, nose FROM tabla

Con el "alias" puedo acceder por nombre del "alias" que he dado (y no necesariamente por el n° de "columna" (0,1 ...) que me entregue el resultado.

2) .. Deberías concretar que BBDD usas .. es necesario saber esto para optimizar tu consulta SQL. (incluye la versión que uses .. sobre todo en Mysql es muyyyy importante).

Un saludo,
  #4 (permalink)  
Antiguo 26/12/2005, 14:26
Avatar de mafima  
Fecha de Ingreso: abril-2003
Ubicación: Medellin-Colombia
Mensajes: 1.109
Antigüedad: 21 años
Puntos: 24
Uso MySql 4.1.7
__________________
SEO en Medellin
  #5 (permalink)  
Antiguo 26/12/2005, 15:17
Avatar de mafima  
Fecha de Ingreso: abril-2003
Ubicación: Medellin-Colombia
Mensajes: 1.109
Antigüedad: 21 años
Puntos: 24
ejemplifico un poco mas mi caso con respecto al segundo punto.

supongamos que en la tabla categorias hay un registro:

ID_categoria = 1
Categoria= prueba

y en la tabla topicos hya dos

ID_topico= 1
ID_categoria=1
orden=0
Asunto=prueba topico

ID_topico= 2
ID_categoria=1
orden=1
Asunto=prueba topico dos

como veran uno es una pregunta y otro es una respuesta

entonces necesito saber si solo con una consulta SQL obtendria la respuesta:

en este caso:

seria asi:

categoria: prueba
preguntas: 1
respuestas 1

habia comenzado con un codigo asi:

Código PHP:
$sql "Select count(topicos.ID_topico) AS total, categorias.categoria FROM categorias, topicos";
$resultado mysql_query($sql);

$fila mysql_fetch_assoc($resultado);
echo 
$fila["total"]; 

pero me da un error, quizas ustedes em puedan ayudar, muchas gracias
__________________
SEO en Medellin
  #6 (permalink)  
Antiguo 26/12/2005, 18:14
Avatar de mafima  
Fecha de Ingreso: abril-2003
Ubicación: Medellin-Colombia
Mensajes: 1.109
Antigüedad: 21 años
Puntos: 24
alguna sugerencia?
__________________
SEO en Medellin
  #7 (permalink)  
Antiguo 27/12/2005, 03:33
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Código:
select (select count(*) from tabla where orden=0) as preguntas, (select count(*) from tabla where orden=1) as respuestas
  #8 (permalink)  
Antiguo 27/12/2005, 08:40
Avatar de mafima  
Fecha de Ingreso: abril-2003
Ubicación: Medellin-Colombia
Mensajes: 1.109
Antigüedad: 21 años
Puntos: 24
Muchas gracias Jose_minglein2 pero no me ha funcionado tu codigo... :S
__________________
SEO en Medellin
  #9 (permalink)  
Antiguo 27/12/2005, 09:15
Avatar de mafima  
Fecha de Ingreso: abril-2003
Ubicación: Medellin-Colombia
Mensajes: 1.109
Antigüedad: 21 años
Puntos: 24
adicionalmente, como podria sacar ene sa consulta el nombre de la categoria?
__________________
SEO en Medellin
  #10 (permalink)  
Antiguo 27/12/2005, 09:23
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Pero entonces te ha funcionado o no???Porque la instrucción funciona a la mil maravillas, lo único que tienes que hacer es adaptarla con el nombre de tu tabla y tal.
  #11 (permalink)  
Antiguo 27/12/2005, 09:30
Avatar de mafima  
Fecha de Ingreso: abril-2003
Ubicación: Medellin-Colombia
Mensajes: 1.109
Antigüedad: 21 años
Puntos: 24
Me saca un error de sintaxis.
__________________
SEO en Medellin
  #12 (permalink)  
Antiguo 27/12/2005, 09:37
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Código:
Select C.ID_categoria, C.Categoria, 
(Select count(*) from topicos where orden=0 and Id_Categoria=C.ID_categoria) as preguntas, 
(Select count(*) from topicos where orden=1 and Id_Categoria=C.ID_categoria) as respuestas 
from categorias C
Si lo que tu has puesto es correcto esta consulta funciona OK, con una tabla categorias (ID_Categoria, Categoria) y una tabla topicos (ID_Categoria, orden...) y con una version 4.x de mysql.
  #13 (permalink)  
Antiguo 27/12/2005, 09:56
Avatar de mafima  
Fecha de Ingreso: abril-2003
Ubicación: Medellin-Colombia
Mensajes: 1.109
Antigüedad: 21 años
Puntos: 24
No funciona

No funciona, mira las imagenes:

Codigo que aplico:
Código PHP:
Select categorias.ID_categoriacategorias.categoria
(
Select count(*) from topicos where orden=and ID_categoria=categorias.ID_categoria) as preguntas
(
Select count(*) from topicos where orden=and ID_categoria=categorias.ID_categoria) as respuestas 
from categorias 
lo cambie para que se ajustara al nombre de mis campos y tablas

IMAGEN:


estructura de la tabla "categorias"



estructura de la tabla "topicos"



Error que me presenta




hey muchas gracia spor tu interes
__________________
SEO en Medellin
  #14 (permalink)  
Antiguo 27/12/2005, 10:09
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Pues te aseguro que la sintaxis es correcta, estas seguro de que tu version es 4.1.7???

Prueba a ejecutar la consulta directamente desde la consola de comandos.
  #15 (permalink)  
Antiguo 27/12/2005, 10:45
Avatar de mafima  
Fecha de Ingreso: abril-2003
Ubicación: Medellin-Colombia
Mensajes: 1.109
Antigüedad: 21 años
Puntos: 24
OYE nada... acabo de verificar la version de mi MySql , estaba confundido la version es la 4.0.26

No deberia de funcionar con esta version?
__________________
SEO en Medellin
  #16 (permalink)  
Antiguo 27/12/2005, 10:54
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Cita:
A subquery is a SELECT statement within another statement.

Starting with MySQL 4.1, all subquery forms and operations that the SQL standard requires are supported, as well as a few features that are MySQL-specific.

With MySQL versions prior to 4.1, it was necessary to work around or avoid the use of subqueries. In many cases, subqueries can successfully be rewritten using joins and other methods. See Section 13.2.8.11, “Rewriting Subqueries as Joins for Earlier MySQL Versions”.
Fuente:
http://dev.mysql.com/doc/refman/4.1/en/subqueries.html

vamos que con 4.0 hacia abajo nada, tendrás que hacerlo con un bucle por codigo o actualizar
  #17 (permalink)  
Antiguo 27/12/2005, 10:55
Avatar de mafima  
Fecha de Ingreso: abril-2003
Ubicación: Medellin-Colombia
Mensajes: 1.109
Antigüedad: 21 años
Puntos: 24
Aunque no lose... miremos:

imagen del pgp info:


imagen del winmysqladmin (semaforo que aprece en la barra de inicio)
__________________
SEO en Medellin
  #18 (permalink)  
Antiguo 27/12/2005, 10:56
Avatar de mafima  
Fecha de Ingreso: abril-2003
Ubicación: Medellin-Colombia
Mensajes: 1.109
Antigüedad: 21 años
Puntos: 24
estoy desesperado queiro hacerlo en una sola consulta y no he sido capas, he intentado cuanta cosa rara se me ocurre y no me da
__________________
SEO en Medellin
  #19 (permalink)  
Antiguo 27/12/2005, 11:02
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
La version es 4.0.26 la que te pone 4.1.7 es del cliente no del servidor, mediante subconsultas no lo podrás hacer a no ser que actualices, otra opción es que alguien conozca algun otro metodo de obtener lo que quieres en una sola consulta, yo desde luego no lo conozco y no creo que se pueda.

Lo siento.
  #20 (permalink)  
Antiguo 27/12/2005, 11:52
Avatar de mafima  
Fecha de Ingreso: abril-2003
Ubicación: Medellin-Colombia
Mensajes: 1.109
Antigüedad: 21 años
Puntos: 24
Bien muchas gracias

Pye gracias asi es pues que todo se debia a la version de mu MySql


como puedo averigual ra version del MySQl de u servidor en internet..., en que aprde el PHPINFO la encuentro?

oye muchisimas gracias por ayudarme
__________________
SEO en Medellin
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:55.