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

hacer select where primary = x

Estas en el tema de hacer select where primary = x en el foro de Bases de Datos General en Foros del Web. Hola a todos: Gracias por leer este post. Tengo una tabla que hace su Primary Key a partir de tres campos: Código: CREATE TABLE cat_servicios ...
  #1 (permalink)  
Antiguo 23/10/2004, 11:57
Avatar de Escoffie  
Fecha de Ingreso: abril-2003
Ubicación: Mérida, Yucatán
Mensajes: 242
Antigüedad: 21 años
Puntos: 9
hacer select where primary = x

Hola a todos:

Gracias por leer este post.

Tengo una tabla que hace su Primary Key a partir de tres campos:

Código:
CREATE TABLE cat_servicios (
  cod_seccion  tinyint(3) unsigned NOT NULL default '0',
  cod_subseccion  tinyint(3) unsigned NOT NULL default '0',
  cod_servicio  int(10) unsigned NOT NULL auto_increment,
  fecha date NOT NULL default '0000-00-00',
  hora time NOT NULL default '00:00:00',
  nombre varchar(255) NOT NULL default '',
  caracteristicas varchar(255) NOT NULL default '',
  precio double default NULL,
  precioAux1 double default NULL,
  precioAux2 double default NULL,
  mostrar tinyint(4) NOT NULL default '1',
  PRIMARY KEY (cod_seccion,cod_subseccion,cod_servicio)
) TYPE=MyISAM;
Para seleccionar un solo registro tendría que hacer algo como:

Código:
SELECT *
FROM cat_servicios
WHERE cod_seccion=X AND cod_subseccion=Y AND cod_servicio=Z;
... que como se puede observar requiere que le pase 3 variables (X, Y y Z)

En concreto, lo que quiero saber es si existe algo como lo que voy a poner en pseudocódigo a continuación:

Código:
SELECT *
FROM cat_servicios
WHERE PRIMARY=XYZ;
He buscado hasta en libros, y nada. Si alguien sabe o conoce un link, se los agradeceré muchísimo.

Saludos
  #2 (permalink)  
Antiguo 24/10/2004, 10:34
 
Fecha de Ingreso: diciembre-2003
Mensajes: 213
Antigüedad: 20 años, 5 meses
Puntos: 0
intenta esto, pero no se si se puede hacer, no estoy seguro.

SELECT *, (cod_seccion + cod_subseccion + cod_servicio ) AS primaria
FROM cat_servicios
where primaria=XYZ;

pero ten en cuenta que esta consulta te obtendria (En caso de que funcione) un campo mas añadido, el primaria (Que es una concatenacion de las tres)

Para evitar esto a lo mejor puedes intentar algo asi:

SELECT * FROM cat_servicios
WHERE XYZ IN (
SELECT cod_seccion + cod_subseccion + cod_servicio
);

Debe haber varias soluciones, yo te planteo esto sin estar seguro de que funciones, pero investiga que al final siempre hay una solucion
  #3 (permalink)  
Antiguo 24/10/2004, 10:58
Avatar de Escoffie  
Fecha de Ingreso: abril-2003
Ubicación: Mérida, Yucatán
Mensajes: 242
Antigüedad: 21 años
Puntos: 9
Gracias Kurlax, la primera opción que me ocmentas no funcionó, me dice esto:
Unknown column 'primaria' in 'where clause'

La segunda opción no la entendí :P pero voy a hacer pruebas a ver qué sale.

Muchas gracias :)
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 19:54.