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

3 puntos de algebra relacional,consultas,having

Estas en el tema de 3 puntos de algebra relacional,consultas,having en el foro de SQL Server en Foros del Web. Hola estoy en face de aprendizaje y pues quien pueda ayudarme con estos puntos entenderlos e interpretarlos . gracias Como hago estos tres puntos con ...
  #1 (permalink)  
Antiguo 14/11/2013, 23:50
 
Fecha de Ingreso: noviembre-2013
Mensajes: 16
Antigüedad: 10 años, 5 meses
Puntos: 0
3 puntos de algebra relacional,consultas,having

Hola estoy en face de aprendizaje y pues quien pueda ayudarme con estos puntos entenderlos e interpretarlos .
gracias

Como hago estos tres puntos con algebra relacional,having,agrupaciones,consultas?

1. Mostrar los datos de los autos con más de 2 accidentes.

2. Mostrar los datos de personas con más de 2 accidentes entre las fechas 01/01/2000.

3. Mostrar los datos de los vehículos con un promedio de multas mayor que 200000.

Esta es la base de datos

Código SQL:
Ver original
  1. CREATE DATABASE DB_multas
  2. USE DB_multas
  3. /******/
  4.  
  5. CREATE TABLE persona(
  6. dni INT,
  7. Nombre VARCHAR(50),
  8. apellidos VARCHAR(50),
  9. direccion VARCHAR(50),
  10. tfno INT,
  11. poblacion VARCHAR(50),
  12. cantidad_multas INT,
  13. CHECK(cantidad_multas>=0),
  14. PRIMARY KEY(dni))
  15. /*****/
  16.  
  17. CREATE TABLE Vehiculo(
  18. matricula VARCHAR (50),
  19. Marca VARCHAR (50) NOT NULL,
  20. modelo INT NOT NULL,
  21. Valor BIGINT,
  22. CHECK (Valor BETWEEN 7000000 AND 200000000),
  23. acumulado FLOAT NOT NULL,
  24. CHECK (acumulado>=0),
  25. PRIMARY KEY (matricula))
  26.  
  27. /******/
  28. CREATE TABLE accidente(
  29. codigo INT,
  30. hora FLOAT,
  31. fecha datetime,
  32. lugar VARCHAR(50),
  33. PRIMARY KEY (codigo))
  34. /*******/
  35. CREATE TABLE multa(
  36. codigo_m INT,
  37. hora FLOAT,
  38. fecha datetime,
  39. lugar VARCHAR(50),
  40. importe FLOAT,
  41. matricula VARCHAR (50),
  42. dni INT,
  43. PRIMARY KEY (codigo_m),
  44. FOREIGN KEY (dni) REFERENCES persona (dni)
  45. ON DELETE cascade ON UPDATE cascade,
  46. FOREIGN KEY (matricula) REFERENCES vehiculo (matricula)
  47. ON DELETE cascade ON UPDATE cascade)
  48. /*******/
  49. CREATE TABLE personas_vehiculos(
  50. matricula VARCHAR (50),
  51. dni INT,
  52. PRIMARY KEY (matricula,dni),
  53. FOREIGN KEY (dni) REFERENCES persona (dni)
  54. ON DELETE cascade ON UPDATE cascade,
  55. FOREIGN KEY (matricula) REFERENCES vehiculo (matricula)
  56. ON DELETE cascade ON UPDATE cascade)
  57. /******/
  58. CREATE TABLE accidentes_persona(
  59. codigo INT,
  60. dni INT,
  61. PRIMARY KEY (codigo,dni),
  62. FOREIGN KEY (dni) REFERENCES persona (dni)
  63. ON DELETE cascade ON UPDATE cascade,
  64. FOREIGN KEY (codigo) REFERENCES accidente (codigo)
  65. ON DELETE cascade ON UPDATE cascade)
  66. /******/
  67.  
  68. CREATE TABLE accidentes_vehiculos(
  69. codigo INT,
  70. matricula VARCHAR(50),
  71. PRIMARY KEY (codigo, matricula),
  72. FOREIGN KEY (matricula) REFERENCES vehiculo (matricula)
  73. ON DELETE cascade ON UPDATE cascade,
  74. FOREIGN KEY (codigo) REFERENCES accidente (codigo)
  75. ON DELETE cascade ON UPDATE cascade)

Gracias

Última edición por gnzsoloyo; 15/11/2013 a las 13:10
  #2 (permalink)  
Antiguo 15/11/2013, 03:39
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: 3 puntos de algebra relacional,consultas,having

Deberias intentar algo por ti mismo..... aqui no solucionamos tareas escolares. Si lo intentas te ayudaremos.... si no no.
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 15/11/2013, 04:04
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: 3 puntos de algebra relacional,consultas,having

Por otro lado... Álgebra relacional no es SQL. Es una etapa MUY anterior.
¿es AR lo que necesitas, o las consultas?

No estamos hablando de lo mismo....
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 15/11/2013, 10:48
 
Fecha de Ingreso: noviembre-2013
Mensajes: 16
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: 3 puntos de algebra relacional,consultas,having

Cita:
Iniciado por quimfv Ver Mensaje
Deberias intentar algo por ti mismo..... aqui no solucionamos tareas escolares. Si lo intentas te ayudaremos.... si no no.
Bueno si he intentado algo por mi mismo ya elabore la base de datos pero tengo es problemas con estos temas .
gracias igual por la respuesta solo busco una guia no que me lo hagan no he dicho que me lo hagan
  #5 (permalink)  
Antiguo 15/11/2013, 10:50
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: 3 puntos de algebra relacional,consultas,having

No me has respondido... ¿Algebra RElacional o SQL?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 15/11/2013, 10:52
 
Fecha de Ingreso: noviembre-2013
Mensajes: 16
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: 3 puntos de algebra relacional,consultas,having

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Por otro lado... Álgebra relacional no es SQL. Es una etapa MUY anterior.
¿es AR lo que necesitas, o las consultas?

No estamos hablando de lo mismo....
Si algebra relacional es lo que hemos estado viendo en clase
con ar , o
< >
  #7 (permalink)  
Antiguo 15/11/2013, 12:48
 
Fecha de Ingreso: noviembre-2013
Mensajes: 16
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: 3 puntos de algebra relacional,consultas,having

Cita:
Iniciado por gnzsoloyo Ver Mensaje
No me has respondido... ¿Algebra RElacional o SQL?
algebra relacional en mysql
  #8 (permalink)  
Antiguo 15/11/2013, 12:51
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: 3 puntos de algebra relacional,consultas,having

El álgebra relacional es totalmente independiente de MySQL, SQL Server, Oracle, DB2, PostgreSQL, etc, porque no es un lenguaje de consulta, sino un fundamento teórico para llegar a él.
Esto, por ejemplo, es una operación expresada como álgebra relacional:



Como podrás ver, eso no es SQL. Y no, tampoc hay tablas de una base de datos. Es todo a nivel teórico.

Estas serían las operaciones básicas de AR. ¿Estamos hablando de lo mismo?:


¿Se puede hacer SQL desde allí?
Si

¿Es correcto?
No exactamente.
Hay métodos más sencillos, pero el AR permite visualizar ciertas cosas de performance de una forma entendible... para el que está habituado.


Por cierto: Ese código que postearte allí arriba... no es de MySQL.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 15/11/2013 a las 13:11
  #9 (permalink)  
Antiguo 15/11/2013, 14:39
 
Fecha de Ingreso: noviembre-2013
Mensajes: 16
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: 3 puntos de algebra relacional,consultas,having

Cita:
Iniciado por gnzsoloyo Ver Mensaje
El álgebra relacional es totalmente independiente de MySQL, SQL Server, Oracle, DB2, PostgreSQL, etc, porque no es un lenguaje de consulta, sino un fundamento teórico para llegar a él.
Esto, por ejemplo, es una operación expresada como álgebra relacional:



Como podrás ver, eso no es SQL. Y no, tampoc hay tablas de una base de datos. Es todo a nivel teórico.

Estas serían las operaciones básicas de AR. ¿Estamos hablando de lo mismo?:


¿Se puede hacer SQL desde allí?
Si

¿Es correcto?
No exactamente.
Hay métodos más sencillos, pero el AR permite visualizar ciertas cosas de performance de una forma entendible... para el que está habituado.


Por cierto: Ese código que postearte allí arriba... no es de MySQL.
gracias

pero realmente no es lo que trabajamos .

y ese codigo es el que nos ha enseñado la profesora en sql y ahi es donde los trabajamos en el lugar donde dice nueva consulta.
el tema es algebra relacional pero cuando busco en la web me sale mas o menos lo que me mandaste mas no como lo trabajamos con ella


losejericicios tienden a ser

Select tipo
from tbedificio
group by tipo

funciones o grupos construidos
trabajan sobre las columnas o grupos

count ():contador //parametro de cualquier tipo

Sum():totalizador

etc



clausula having

agrupaciones

este tipo de cosas
  #10 (permalink)  
Antiguo 15/11/2013, 14:47
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: 3 puntos de algebra relacional,consultas,having

Cita:
Iniciado por ellandax Ver Mensaje
gracias

pero realmente no es lo que trabajamos .

y ese codigo es el que nos ha enseñado la profesora en sql y ahi es donde los trabajamos en el lugar donde dice nueva consulta.
el tema es algebra relacional pero cuando busco en la web me sale mas o menos lo que me mandaste mas no como lo trabajamos con ella


losejericicios tienden a ser

Select tipo
from tbedificio
group by tipo

funciones o grupos construidos
trabajan sobre las columnas o grupos

count ():contador //parametro de cualquier tipo

Sum():totalizador

etc



clausula having

agrupaciones

este tipo de cosas
Bueno, el tema es que lo que te ha dado tu profesora no es álgebra relacional, sino uso de funciones argupadas, que es algo totalmente distinto.
Lamento decirtelo, pero o no sabe de qué está hablando, o cambió de idioma, o bien no es experta en dictado de Bases de Datos...

Como sea, la cosa es bastante más simple desde ese ángulo.

De momento te doy la pauta básica así:
Código MySQL:
Ver original
  1. SELECT a, b, c, d
  2. FROM tabla
  3. WHERE [condiciones]
  4. GROUP BY d, e, f
  5. HAVING COUNT(*) = valorbuscado;
Sobre la base de ese esquema se pueden hacer todas las consultas.

Más tarde te doy mejores indicaciones, pero desde casa. Ya estoy de slaida en el trabajo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #11 (permalink)  
Antiguo 15/11/2013, 15:36
 
Fecha de Ingreso: noviembre-2013
Mensajes: 16
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: 3 puntos de algebra relacional,consultas,having

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Bueno, el tema es que lo que te ha dado tu profesora no es álgebra relacional, sino uso de funciones argupadas, que es algo totalmente distinto.
Lamento decirtelo, pero o no sabe de qué está hablando, o cambió de idioma, o bien no es experta en dictado de Bases de Datos...

Como sea, la cosa es bastante más simple desde ese ángulo.

De momento te doy la pauta básica así:
Código MySQL:
Ver original
  1. SELECT a, b, c, d
  2. FROM tabla
  3. WHERE [condiciones]
  4. GROUP BY d, e, f
  5. HAVING COUNT(*) = valorbuscado;
Sobre la base de ese esquema se pueden hacer todas las consultas.

Más tarde te doy mejores indicaciones, pero desde casa. Ya estoy de slaida en el trabajo.
ya le mande un email a la profesora
fue un error de ella

me dijo que el tema son consultas agrupadas
muchas gracias por tu ayuda
  #12 (permalink)  
Antiguo 15/11/2013, 16:29
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: 3 puntos de algebra relacional,consultas,having

Bueno, le alegro que lo aclarara. Le tendremos piedad por esta vez
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #13 (permalink)  
Antiguo 15/11/2013, 16:42
 
Fecha de Ingreso: noviembre-2013
Mensajes: 16
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: 3 puntos de algebra relacional,consultas,having

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Bueno, le alegro que lo aclarara. Le tendremos piedad por esta vez
jajaja
  #14 (permalink)  
Antiguo 15/11/2013, 17:03
 
Fecha de Ingreso: noviembre-2013
Mensajes: 16
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: 3 puntos de algebra relacional,consultas,having

oara el primer punto??
Código MySQL:
Ver original
  1. select accidente
  2. from vehiculo,accidente
  3. where los vehiculos con mas de dos accidentes

como voy haciendo??

Última edición por gnzsoloyo; 16/11/2013 a las 10:35
  #15 (permalink)  
Antiguo 15/11/2013, 19:13
 
Fecha de Ingreso: noviembre-2013
Mensajes: 16
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: 3 puntos de algebra relacional,consultas,having

Código MySQL:
Ver original
  1. select count (accidente)
  2. from accidente_vehiculo
  3. where  accidentes_vehiculos > (2)
  4. group by accidentes_vehiculo
  5. having(accidentes_vehiculos)> 2

----------------------------------

asi estaria bien el primer punto???

Última edición por gnzsoloyo; 16/11/2013 a las 10:35
  #16 (permalink)  
Antiguo 15/11/2013, 19:24
 
Fecha de Ingreso: noviembre-2013
Mensajes: 16
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: 3 puntos de algebra relacional,consultas,having

Código MySQL:
Ver original
  1. SELECT * FROM total_accidentes_veiculos tav WHERE tav.total > 2;
Código MySQL:
Ver original
  1. SELECT * FROM total_accidentes_personas tap WHERE tap.total > 2 AND tap.fecha > 2000-01-01;
Código MySQL:
Ver original
  1. SELECT * FROM promedio_multas pm WHERE pm.promedio > 200000;

Código MySQL:
Ver original
  1. CREATE VIEW total_accidentes_veiculos AS
  2.     SELECT
  3.         v.*,
  4.         COUNT(av.matricula) as total
  5.     FROM veiculo v
  6.     LEFT JOIN accidentes_vehiculos av ON v.matricula = av.matricula
  7.     LEFT JOIN accidente a ON av.codigo = a.codigo GROUP BY v.matricula;
Código MySQL:
Ver original
  1. CREATE VIEW total_accidentes_personas AS
  2.     SELECT
  3.         p.*
  4.         COUNT(ap.dni) AS total,
  5.         a.*
  6.     FROM persona p
  7.     LEFT JOIN  accidentes_persona ap ON ap.dni =  p.dni
  8.     LEFT JOIN accidentes a ON a.codigo = ap.codigo GROUP BY p.dni;
Código MySQL:
Ver original
  1. CREATE VIEW promedio_multas AS
  2.     SELECT
  3.         v.*,
  4.         SUM(m.importe)/COUNT(m.importe) as promedio
  5.     FROM veiculo v
  6.     LEFT JOIN multas m ON m.matricula = v.matricula GROUP BY v.matricula;

le añadi esto ahora me sale estos errores

Mens. 111, Nivel 15, Estado 1, Línea 94
'CREATE VIEW' debe ser la primera instrucción en un lote de consultas.
Mens. 111, Nivel 15, Estado 1, Línea 102
'CREATE VIEW' debe ser la primera instrucción en un lote de consultas.
Mens. 102, Nivel 15, Estado 1, Línea 105
Sintaxis incorrecta cerca de 'COUNT'.
Mens. 111, Nivel 15, Estado 1, Línea 111
'CREATE VIEW' debe ser la primera instrucción en un lote de consultas.

Última edición por gnzsoloyo; 16/11/2013 a las 06:33
  #17 (permalink)  
Antiguo 16/11/2013, 02:11
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: 3 puntos de algebra relacional,consultas,having

ellandax,
vamos con el primer ejercicio y ve despacio:
Cita:
1. Mostrar los datos de los autos con más de 2 accidentes.
Pasos para preparar la consulta.
1) averiguar la matrícula de los vehículos que han sufrido más de dos accidentes y para ello solo te hace falta la tabla accidentes_vehiculos. Agrupas por matrícula y te traes las matrículas que han sufrido más de dos accidentes.
Código MySQL:
Ver original
  1. SELECT matricula
  2.  FROM accidentes_vehiculos
  3.    GROUP BY matricula
  4.     HAVING COUNT(*) > 2
2) traerte después los datos de todos esos vehiculos mediante un inner join con la tabla vehiculo relacionando por el campo matrícula (consulta y subconsulta). Hay que usar alias para la consulta sobre accidentes, lo que te permitirá relacionarla mediante INNER JOIN con la tabla vehiculo.
Código MySQL:
Ver original
  1. SELECT v.* FROM vehiculo v INNER JOIN
  2.    (SELECT matricula
  3.         FROM accidentes_vehiculos
  4.           GROUP BY matricula
  5.             HAVING COUNT(*) > 2)t1
  6. ON v.matricula = t1.matricula

Prueba y dinos si funciona; analiza cada consulta fijándote en qué buscas y en qué tabla puedes encontrar los datos relevantes para la misma, qué debes buscar primero y cómo, y poseriormente cómo traerte lo demás. Hazte primero esas preguntas.
Responde al segundo ejercicio por partes, preocupándote de lo que es más relevante para ello y dónde está.
Por cierto, revisa la redacción de las preguntas, pues esto
Cita:
entre las fechas 01/01/2000.
está mal, falta otra fecha para establecer el rango.
Sobre el promedio, busca la función de agregación pertinente, que la hay.
Y un consejo de alguien algo ajeno a este mundo como yo: prueba parte por parte para comprobar que los datos devueltos son los esperados en cada una de ellas.

Última edición por jurena; 16/11/2013 a las 02:24
  #18 (permalink)  
Antiguo 16/11/2013, 09:54
 
Fecha de Ingreso: noviembre-2013
Mensajes: 16
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: 3 puntos de algebra relacional,consultas,having

Cita:
Iniciado por jurena Ver Mensaje
ellandax,
vamos con el primer ejercicio y ve despacio:

Pasos para preparar la consulta.
1) averiguar la matrícula de los vehículos que han sufrido más de dos accidentes y para ello solo te hace falta la tabla accidentes_vehiculos. Agrupas por matrícula y te traes las matrículas que han sufrido más de dos accidentes.
Código MySQL:
Ver original
  1. SELECT matricula
  2.  FROM accidentes_vehiculos
  3.    GROUP BY matricula
  4.     HAVING COUNT(*) > 2
2) traerte después los datos de todos esos vehiculos mediante un inner join con la tabla vehiculo relacionando por el campo matrícula (consulta y subconsulta). Hay que usar alias para la consulta sobre accidentes, lo que te permitirá relacionarla mediante INNER JOIN con la tabla vehiculo.
Código MySQL:
Ver original
  1. SELECT v.* FROM vehiculo v INNER JOIN
  2.    (SELECT matricula
  3.         FROM accidentes_vehiculos
  4.           GROUP BY matricula
  5.             HAVING COUNT(*) > 2)t1
  6. ON v.matricula = t1.matricula

Prueba y dinos si funciona; analiza cada consulta fijándote en qué buscas y en qué tabla puedes encontrar los datos relevantes para la misma, qué debes buscar primero y cómo, y poseriormente cómo traerte lo demás. Hazte primero esas preguntas.
Responde al segundo ejercicio por partes, preocupándote de lo que es más relevante para ello y dónde está.
Por cierto, revisa la redacción de las preguntas, pues esto

está mal, falta otra fecha para establecer el rango.
Sobre el promedio, busca la función de agregación pertinente, que la hay.
Y un consejo de alguien algo ajeno a este mundo como yo: prueba parte por parte para comprobar que los datos devueltos son los esperados en cada una de ellas.
gracias :D
Asi como esta este codigo esta bien?

Código MySQL:
Ver original
  1. SELECT * FROM total_accidentes_veiculos tav WHERE tav.total > 2;
  2.  
  3. SELECT * FROM total_accidentes_personas tap WHERE tap.total > 2 AND tap.fecha > 2000-01-01;
  4.  
  5. SELECT * FROM promedio_multas pm WHERE pm.promedio > 200000;
  6.  
  7.  
  8. CREATE VIEW total_accidentes_veiculos AS
  9.     SELECT
  10.         v.*,
  11.         COUNT(av.matricula) as total
  12.     FROM veiculo v
  13.     LEFT JOIN accidentes_vehiculos av ON v.matricula = av.matricula
  14.     LEFT JOIN accidente a ON av.codigo = a.codigo GROUP BY v.matricula;
  15.  
  16. CREATE VIEW total_accidentes_personas AS
  17.     SELECT
  18.         p.*,
  19.         COUNT(ap.dni) AS total,
  20.         a.*
  21.     FROM persona p
  22.     LEFT JOIN  accidentes_persona ap ON ap.dni =  p.dni
  23.     LEFT JOIN accidentes a ON a.codigo = ap.codigo GROUP BY p.dni;
  24.  
  25. CREATE VIEW promedio_multas AS
  26.     SELECT
  27.         v.*,
  28.         SUM(m.importe)/COUNT(m.importe) as promedio
  29.     FROM veiculo v
  30.     LEFT JOIN multas m ON m.matricula = v.matricula GROUP BY v.matricula;
[/CODE]

Última edición por gnzsoloyo; 16/11/2013 a las 10:34
  #19 (permalink)  
Antiguo 16/11/2013, 09:57
 
Fecha de Ingreso: noviembre-2013
Mensajes: 16
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: 3 puntos de algebra relacional,consultas,having

Código MySQL:
Ver original
  1. SELECT v.* FROM vehiculo v INNER JOIN
  2.    (SELECT matricula
  3.         FROM accidentes_vehiculos
  4.           GROUP BY matricula
  5.             HAVING COUNT(*) > 2)t1
  6. ON v.matricula = t1.matricula
[/QUOTE]

si lo probe y me funciono :D
gracias

Última edición por gnzsoloyo; 16/11/2013 a las 10:34
  #20 (permalink)  
Antiguo 16/11/2013, 10:22
 
Fecha de Ingreso: noviembre-2013
Mensajes: 16
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: 3 puntos de algebra relacional,consultas,having

para el segundo punto
la he hecho asi

Código MySQL:
Ver original
  1. Select fecha
  2. from accidente,accidentes_vehiculos
  3. where fecha BETWEEN '01,01,2000' and '01,01,2000'
  4. group by fecha

me sale este error


Mens. 241, Nivel 16, Estado 1, Línea 2
Error de conversión al convertir una cadena de caracteres a datetime.

Última edición por gnzsoloyo; 16/11/2013 a las 10:33
  #21 (permalink)  
Antiguo 16/11/2013, 10:29
 
Fecha de Ingreso: noviembre-2013
Mensajes: 16
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: 3 puntos de algebra relacional,consultas,having

Código MySQL:
Ver original
  1. select importe
  2. from multa
  3. group by importe
  4. having count (*) >200000


asi hice el 3 punto y me funciono :D
  #22 (permalink)  
Antiguo 16/11/2013, 10:32
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: 3 puntos de algebra relacional,consultas,having

Seré curioso, pero ¿qué estás usando para ejecutar las consultas?
Porque esto:
Cita:
Mens. 241, Nivel 16, Estado 1, Línea 2
Error de conversión al convertir una cadena de caracteres a datetime.
No es un mensaje propio de MySQL. No tengo ni idea de qué puede devolver eso.

PD: Por favor, usar los highlights SQL o MySQL para poner código SQL. Para eso está ese combo...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #23 (permalink)  
Antiguo 16/11/2013, 10:57
 
Fecha de Ingreso: noviembre-2013
Mensajes: 16
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: 3 puntos de algebra relacional,consultas,having

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Seré curioso, pero ¿qué estás usando para ejecutar las consultas?
Porque esto:

No es un mensaje propio de MySQL. No tengo ni idea de qué puede devolver eso.

PD: Por favor, usar los highlights SQL o MySQL para poner código SQL. Para eso está ese combo...
sql server 2012
  #24 (permalink)  
Antiguo 16/11/2013, 11:30
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: 3 puntos de algebra relacional,consultas,having

ellandax,
en este foro podemos ayudarte con el SQL estándar, pero para resolver cuestiones concretas de sql server deberías preguntar en su foro
http://www.forosdelweb.com/f87/
  #25 (permalink)  
Antiguo 16/11/2013, 12:00
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: 3 puntos de algebra relacional,consultas,having

Movido a Foro de SQL Server.

Ten en cuenta siempre postear en el foro correcto. Si bien existe un SQL estándar (ANSI), cada DBMS tiene suficientes diferencias como para generar errores usando la misma sintaxis entre DBMSs cruzados.
En caso de cualquier uso de GROUP BY es paradigmático: MySQL permite hacer cosas que otros no, por lo que es altamente probable que una consulta con GROUP BY en MySQL de errores en SQL Server.

Además, uso de fechas en los diferentes DBMS tampoco está muy normalizado, salvo contadas excepciones. Si bien todos usan el mismo tipo de dato físico para su almacenamiento, cada DBMS usa diferentes funciones para interpretar una cadena de texto como fecha.
Sea el caso MySQL:
Código MySQL:
Ver original
  1. '2013-11-12' >= CURDATE();
Código MySQL:
Ver original
  1. DATE('2013-11-12') >= CURDATE();
Código MySQL:
Ver original
  1. STR_TO_DATE('2013-11-12', '%Y-%m-%d') >= CURDATE();
Código MySQL:
Ver original
  1. STR_TO_DATE('11/12/2013', '%d/%m/%Y') >= CURDATE();

Oracle:
Código SQL:
Ver original
  1. TO_DATE('2013-11-12', 'YYYY-MM-DD') >= SYSDATE;
Y creo que SQL Server sería mas o menos:
Código SQL:
Ver original
  1. CONVERT(datetime, '01/06/2013', 103) >= GETDATE()
Que me corrijan si me equivoco en este último.

Como podrás ver, ninguno de los tres usa la misma forma para hacer la misma operación, a pesar qu een los tres casos se trata exactamente de la misma comparación.

Por eso, debes definir bien lo que estás usando, y no confundirte a la hora de presentar el trabajo, si se te exige usar un DBMS específico (cosa que no has aclarado).
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 16/11/2013 a las 14:52

Etiquetas: algebra, mysql, puntos
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 22:57.