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

esta consulta me tiene locoooo!!!

Estas en el tema de esta consulta me tiene locoooo!!! en el foro de Bases de Datos General en Foros del Web. hola amigos, nose como plantear la siguente consulta, tengo una lista de empresas donde guardo en 8 campos diferentes 8 subsectores, y tengo un conbobox ...
  #1 (permalink)  
Antiguo 23/09/2010, 08:56
 
Fecha de Ingreso: abril-2010
Ubicación: Extremadura
Mensajes: 128
Antigüedad: 14 años
Puntos: 2
esta consulta me tiene locoooo!!!

hola amigos, nose como plantear la siguente consulta, tengo una lista de empresas donde guardo en 8 campos diferentes 8 subsectores, y tengo un conbobox doble para seleccionar sectores y subsectores, y necesito dos consultas que no se como hacer:

la primera(si solo marco sectores y dejo subsectores en blanco):
mostrar todas las empresas cuyo sector coincida con el que yo le pase, mi problema es que guardo los subsectores, no los sectores, aunque en la tabla se refleja en la misma fila id sector,id subsector y nombre del subsector

segunda(si marco un sector y un subsector):
es mostrar todas las empresas que tenga un determinado subsector, esto creo que e es mas sencillo por que seria buscar en actividad1 o actividad2 o actividad3...... y si encuntra coincidencia mostrar esa fila



gracias, por favor indiquenme el problema, admito todo tipo de sugerencias, gracias




Código MySQL:
Ver original
  1. -- phpMyAdmin SQL Dump
  2. -- version 3.2.4
  3. -- http://www.phpmyadmin.net
  4. --
  5. -- Servidor: localhost
  6. -- Tiempo de generación: 23-09-2010 a las 13:29:10
  7. -- Versión del servidor: 5.1.41
  8. -- Versión de PHP: 5.3.1
  9.  
  10. SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
  11.  
  12.  
  13. /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
  14. /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
  15. /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
  16. /*!40101 SET NAMES utf8 */;
  17.  
  18. --
  19. -- Base de datos: `ayuntamiento_zafra`
  20. --
  21. CREATE DATABASE `ayuntamiento_zafra` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
  22. USE `ayuntamiento_zafra`;
  23.  
  24. -- --------------------------------------------------------
  25.  
  26. --
  27. -- Estructura de tabla para la tabla `sectores`
  28. --
  29.  
  30. CREATE TABLE IF NOT EXISTS `sectores` (
  31.   `id_sector` INT(11) NOT NULL AUTO_INCREMENT,
  32.   `nom_sector` VARCHAR(50) NOT NULL,
  33.   PRIMARY KEY (`id_sector`)
  34. ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=39 ;
  35.  
  36. --
  37. -- Volcar la base de datos para la tabla `sectores`
  38. --
  39.  
  40. INSERT INTO `sectores` (`id_sector`, `nom_sector`) VALUES
  41. (1, 'Agricultura y Ganadería'),
  42. (2, 'Alimentación'),
  43. (3, 'Animales y mascotas'),
  44. (4, 'Arte'),
  45. (5, 'Asesorías y despachos'),
  46. (6, 'Bancos y cajas'),
  47. (7, 'Belleza'),
  48. (8, 'Bodas');
  49.  
  50.  
  51. -- --------------------------------------------------------
  52.  
  53. --
  54. -- Estructura de tabla para la tabla `subsectores`
  55. --
  56.  
  57. CREATE TABLE IF NOT EXISTS `subsectores` (
  58.   `id_subsector` INT(11) NOT NULL AUTO_INCREMENT,
  59.   `nom_subsector` VARCHAR(50) NOT NULL,
  60.   `id_sector` INT(11) NOT NULL,
  61.   PRIMARY KEY (`id_subsector`)
  62. ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=357 ;
  63.  
  64. --
  65. -- Volcar la base de datos para la tabla `subsectores`
  66. --
  67.  
  68. INSERT INTO `subsectores` (`id_subsector`, `nom_subsector`, `id_sector`) VALUES
  69. (1, 'Abastecimiento de agua', 1),
  70. (2, 'Abonado de tierra', 1),
  71. (3, 'Abono orgánico', 1),
  72. (4, 'Aceite de girasol', 1),
  73. (5, 'Aceite de oliva', 1),
  74. (6, 'Aceite industrial', 1),
  75. (7, 'Aglomerado asfáltico', 1),
  76. (8, 'Alfalfa', 1),
  77. (9, 'Alimento para ganado', 1),
  78. (10, 'Árboles', 1),
  79. (11, 'Arboricultura', 1),
  80. (12, 'Asesoramiento agrícola', 1),
  81. (13, 'Asociaciones agrarias', 1),
  82. (14, 'Avícola', 1),
  83. (15, 'Avicultura', 1),
  84. (16, 'Canalizaciones', 1),
  85. (17, 'Cebollas', 1),
  86. (18, 'Comercialización producto agrícola', 1),
  87. (19, 'Construcción agrícola', 1),
  88. (20, 'Consultoría ganadera', 1),
  89. (21, 'Corcho', 1),
  90. (22, 'Cría de ganado equino', 1),
  91. (23, 'Cría de ganado porcino', 1),
  92. (24, 'Elaboración de vino', 1),
  93. (25, 'Fertilizantes', 1),
  94. (26, 'Frutales', 1),
  95. (27, 'Ganadería', 1),
  96. (28, 'Ganado', 1),
  97. (29, 'Granja', 1),
  98. (30, 'Hortalizas', 1),
  99. (31, 'Hortofrutícolas', 1),
  100. (32, 'Instalación de riego', 1),
  101. (33, 'Invernaderos', 1),
  102. (34, 'Maquinaria agrícola', 1),
  103. (35, 'Maquinaria para agricultura', 1),
  104. (36, 'Maquinaria vinícola', 1),
  105. (37, 'Mataderos', 1),
  106. (38, 'Material para agricultura', 1),
  107. (39, 'Molinos', 1),
  108. (40, 'Motosierras', 1),
  109. (41, 'Movimiento de tierras', 1),
  110. (42, 'Naranjas', 1),
  111. (43, 'Palmeras', 1),
  112. (44, 'Pesticidas', 1),
  113. (45, 'Picaderos', 1),
  114. (46, 'Piensos', 1),
  115. (47, 'Piscifactoría', 1),
  116. (48, 'Productos agropecuarios', 1),
  117. (49, 'Semillas', 1),
  118. (50, 'Semilleros', 1),
  119. (51, 'Servicio agrícola', 1),
  120. (52, 'Tratamiento agrícola', 1),
  121. (53, 'Tratamiento de agua', 1),
  122. (54, 'Tratante de ganado', 1),
  123. (55, 'Verduras', 1),
  124. (56, 'Vivero de plantas', 1),
  125. (57, 'Viveros árboles', 1),
  126. (58, 'Viveros de marisco', 1),
  127. (59, 'Zumos', 1),
  128. (60, 'Aceites', 2),
  129. (61, 'Aceitunas', 2),
  130. (62, 'Aditivos para la alimentación', 2),
  131. (63, 'Agua embotellada', 2),
  132. (64, 'Agua mineral', 2),
  133. (65, 'Agua potable', 2),
  134. (66, 'Ahumados', 2),
  135. (67, 'Alimentación animal', 2),
  136. (68, 'Alimentación distribución', 2),
  137. (69, 'Alimentos congelados', 2),
  138. (70, 'Alimentos preparados', 2),
  139. (71, 'Alimentos y alimentación', 2),
  140. (72, 'Almacén de comestibles', 2),
  141. (73, 'Aperitivos', 2),
  142. (74, 'Autoservicios', 2),
  143. (75, 'Bebidas', 2),
  144. (76, 'Bebidas almacenes', 2),
  145. (77, 'Bebidas refrescantes', 2),
  146. (78, 'Bebidas y refrescos', 2),
  147. (79, 'Bodegas', 2),
  148. (80, 'Bodegas de cava', 2),
  149. (81, 'Bodegas de vino', 2),
  150. (82, 'Bombones', 2),
  151. (83, 'Café', 2),
  152. (84, 'Caramelos', 2),
  153. (85, 'Cárnicas y carnicerías', 2),
  154. (86, 'Cereales', 2),
  155. (87, 'Charcutería', 2),
  156. (88, 'Chocolaterías', 2),
  157. (89, 'Comida para llevar', 2),
  158. (90, 'Comida rápida', 2),
  159. (91, 'Comidas', 2),
  160. (92, 'Comidas preparadas', 2),
  161. (93, 'Congelados', 2),
  162. (94, 'Conservas', 2),
  163. (95, 'Consumibles', 2),
  164. (96, 'Control de calidad', 2),
  165. (97, 'Delicatessen', 2),
  166. (98, 'Dietética', 2),
  167. (99, 'Dietista', 2),
  168. (100, 'Distribución de alimentos', 2),
  169. (101, 'Dulces', 2),
  170. (102, 'Escuela hostelería', 2),
  171. (103, 'Frutos secos', 2),
  172. (105, 'Gourmet y delicatessen', 2),
  173. (106, 'Horchata', 2),
  174. (107, 'Hortalizas y fruterías', 2),
  175. (108, 'Industria cárnica', 2),
  176. (109, 'Infusiones', 2),
  177. (110, 'Jamones', 2),
  178. (111, 'Lácteos', 2),
  179. (112, 'Maquinaria alimentación', 2),
  180. (113, 'Mariscos', 2),
  181. (114, 'Material hostelería', 2),
  182. (115, 'Naturismo', 2),
  183. (116, 'Naturista', 2),
  184. (117, 'Nutrición', 2),
  185. (118, 'Nutricionista', 2),
  186. (119, 'Panaderías', 2),
  187. (120, 'Panificadoras', 2),
  188. (121, 'Pasteles', 2),
  189. (122, 'Pescados', 2),
  190. (123, 'Pollerías y pollos asados', 2),
  191. (124, 'Producto lácteo', 2),
  192. (125, 'Productos alimentación', 2),
  193. (126, 'Productos alimenticios', 2),
  194. (127, 'Productos congelados', 2),
  195. (128, 'Queserías', 2),
  196. (129, 'Refrigeración', 2),
  197. (130, 'Supermercados', 2),
  198. (131, 'Tapones', 2),
  199. (132, 'Vinos', 2),
  200. (133, 'Vinotecas', 2),
  201. (134, 'Accesorios mascotas', 3),
  202. (135, 'Acuarios', 3),
  203. (136, 'Adiestramiento de animales', 3),
  204. (137, 'Alquiler de perros adiestrados', 3),
  205. (138, 'Anfibios', 3),
  206. (139, 'Animales de compañía', 3),
  207. (140, 'Cachorros', 3),
  208. (141, 'Caracoles', 3),
  209. (142, 'Cementerio de animales', 3),
  210. (143, 'Comida para animales', 3),
  211. (144, 'Criadero de perros', 3),
  212. (145, 'Hospitales veterinarios', 3),
  213. (146, 'Jaulas', 3),
  214. (147, 'Mascotas', 3),
  215. (148, 'Pajarerías', 3),
  216. (149, 'Pájaros', 3),
  217. (150, 'Paseo de mascotas', 3),
  218. (151, 'Peces', 3),
  219. (152, 'Peces tropicales', 3),
  220. (153, 'Peluquería canina', 3),
  221. (154, 'Perreras', 3);
  222.  
  223.  
  224. /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
  225. /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
  226. /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
  #2 (permalink)  
Antiguo 23/09/2010, 12:06
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: esta consulta me tiene locoooo!!!

Todo lo referido a qué consulta lanzar dependiendo de si se selecciona en un selector o en otro, te lo resolverán en el foro PHP.

respecto a la consulta si sólo eliges el sector:
SELECT e.nombre_empresa FROM empresas e INNER JOIN `subsectores` ss ON e.id_subsector = ss.id_subsector INNER JOIN sectores s ON ss.id_sector = s.id_sector WHERE s.id_sector = 1

He inventado nombres de tabla y de campos que no nos has hecho llegar. Aquí busco todas las empresas del sector cuyo id_sector es 1.

Para los subsectores sólo tendrías que poner en el WHERE el id_subsector = a lo que sea.

Pero para saber cómo lanzar una consulta u otra, deberás preguntarlo en el foro PHP.
Por cierto, churretin, una cosa más: con la estructura que pareces tener, una empresa no puede pertenecer a dos subsectores de un mismo sector, ni tampoco a más subsectores, sean del mismo o distinto sector.
Para eso deberías sacar el id_subsector de la tabla empresas y crear una tabla subsectoresempresas con id_subsector e id_empresa. Eso te permitiría asignar a una misma empresa todos los subsectores que quisieras.

Última edición por jurena; 23/09/2010 a las 12:23
  #3 (permalink)  
Antiguo 28/09/2010, 07:40
 
Fecha de Ingreso: abril-2010
Ubicación: Extremadura
Mensajes: 128
Antigüedad: 14 años
Puntos: 2
Respuesta: esta consulta me tiene locoooo!!!

Cita:
Iniciado por jurena Ver Mensaje
Todo lo referido a qué consulta lanzar dependiendo de si se selecciona en un selector o en otro, te lo resolverán en el foro PHP.

respecto a la consulta si sólo eliges el sector:
SELECT e.nombre_empresa FROM empresas e INNER JOIN `subsectores` ss ON e.id_subsector = ss.id_subsector INNER JOIN sectores s ON ss.id_sector = s.id_sector WHERE s.id_sector = 1

He inventado nombres de tabla y de campos que no nos has hecho llegar. Aquí busco todas las empresas del sector cuyo id_sector es 1.

Para los subsectores sólo tendrías que poner en el WHERE el id_subsector = a lo que sea.

Pero para saber cómo lanzar una consulta u otra, deberás preguntarlo en el foro PHP.
Por cierto, churretin, una cosa más: con la estructura que pareces tener, una empresa no puede pertenecer a dos subsectores de un mismo sector, ni tampoco a más subsectores, sean del mismo o distinto sector.
Para eso deberías sacar el id_subsector de la tabla empresas y crear una tabla subsectoresempresas con id_subsector e id_empresa. Eso te permitiría asignar a una misma empresa todos los subsectores que quisieras.
hola disculpa por tardar en responder, claro mi probelma esta en k en la tabla datos_empresa tengo ocho campos donde guardo los id de los subsentores y eso no esta bine hecho, e comprendido lo k me dices de crear una tabla intermedia, pero nose como hacer esa relacion en mysql, puedes hecharme una mano??

gracias
  #4 (permalink)  
Antiguo 30/09/2010, 01:13
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: esta consulta me tiene locoooo!!!

Unas preguntas antes:
¿Un mismo subsector puede pertenecer a varios sectores?
¿varios subsectores pueden pertenecer a un mismo sector?
¿Una empresa puede ser englobada en varios subsectores, sean o no del mismo sector?

Esas son las preguntas que te tienes que hacer. Con las respuestas podremos echarte una mano. Bastará con corregir algo lo que tienes; no será difícil.
  #5 (permalink)  
Antiguo 01/10/2010, 10:55
 
Fecha de Ingreso: abril-2010
Ubicación: Extremadura
Mensajes: 128
Antigüedad: 14 años
Puntos: 2
Respuesta: esta consulta me tiene locoooo!!!

¿Un mismo subsector puede pertenecer a varios sectores?
no puede perteneces, aun que coincidan muy pocos en nombre, tiene un id unico

¿varios subsectores pueden pertenecer a un mismo sector?
cada sector tiene cientos de subsectores

¿Una empresa puede ser englobada en varios subsectores, sean o no del mismo sector?
cada empresa se le atribullen 8 subsectores ya sea del mismo sector o de diferente


espero haber respondido clarmaanete, cualkier duda preguntemla??

muchisimas gracias por tu atencion
  #6 (permalink)  
Antiguo 03/10/2010, 14:28
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: esta consulta me tiene locoooo!!!

Pues creo que te falta sólo una tabla, la de
empresassubsectores
id_emprsubsector, id_subsector, id_empresa

Los campos id_subsector e id_empresa, que serán numéricos INT(11) deberán ser indexados.

Las vinculaciones de empresas a subsectores se almacenarán en esa tabla. En la tabla empresas no deberá haber ningún campo id_subsector.
Piensa que a los sectores llegarás desde los subsectores.

Creo que esta respuesta tuya delata que no has entendido bien mi pregunta:
Cita:
Un mismo subsector puede pertenecer a varios sectores?
no puede perteneces, aun que coincidan muy pocos en nombre, tiene un id unico
Lo que pregunto es si el subsector 'aceite de oliva' podría relacionarse con los sectores alimentación y agricultura, por ponerte un ejemplo, o cada subsector sólo puede relacionarse con un sector.
Si un subsector sólo puede tener un sector de referencia, podrías tener un campo en la tabla subsectores, como ocurre ahora; pero si no es así, tendrías que tener una tabla
subsectoressectores
id_subsectoressectores, id_subsector, id_sector

Pero si cada subsector sólo lo es de un sector, lo que tienes está bien.
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 20:29.