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

Diferencias entre Access y SQL Server

Estas en el tema de Diferencias entre Access y SQL Server en el foro de Bases de Datos General en Foros del Web. Hola a todos. Estoy trabajando en Access y en PhpMyAdmin con el Sql Server que viene con el Apache usando tablas idénticas. Pero haciendo la ...
  #1 (permalink)  
Antiguo 04/05/2004, 10:45
 
Fecha de Ingreso: mayo-2004
Mensajes: 27
Antigüedad: 20 años
Puntos: 0
Pregunta Diferencias entre Access y SQL Server

Hola a todos. Estoy trabajando en Access y en PhpMyAdmin con el Sql Server que viene con el Apache usando tablas idénticas. Pero haciendo la misma consulta en cada programa he obtenido resultados diferentes. Las 3 tablas son estas (el símbolo "|" separa las columnas):



- categorías:

categoría_id | nombre
1 | telas
2 | ropa
3 | polos
4 | faldas
5 | pantalones
6 | vermudas
7 | seda
8 | gamusa
9 | toalla
10 | verano
11 | invierno


- productos:

producto_id | tienda_id | rama_id | imágen
1 | 1 | 4 | polo de verano
2 | 2 | 8 | polo de invierno
3 | 3 | 10 | pantalón de invierno
4 | 1 | 6 | pantalón de verano
5 | 2 | 4 | polo de verano verde
6 | 3 | 8 | polo de invierno azul
7 | 1 | 5 | falda de verano
8 | 1 | 5 | falda de verano verde
9 | 2 | 2 | gamusa roja
10 | 3 | 1 | seda azul
11 | 1 | 3 | toalla verde
12 | 2 | 3 | toalla roja
13 | 3 | 7 | vermuda de verano
14 | 1 | 7 | vermuda de verano floreada
15 | 2 | 7 | vermuda de verano naranja
16 | 3 | 8 | polo de invierno blanco



- ramas:

rama_id | nodo_1 | nodo_2 | nodo_3 | nodo_4 | nodo_5
1 | 1 | 7 | 0 | 0 | 0
2 | 1 | 8 | 0 | 0 | 0
3 | 1 | 9 | 0 | 0 | 0
4 | 2 | 3 | 10 | 0 | 0
5 | 2 | 4 | 10 | 0 | 0
6 | 2 | 5 | 10 | 0 | 0
7 | 2 | 6 | 10 | 0 | 0
8 | 2 | 3 | 11 | 0 | 0
9 | 2 | 4 | 11 | 0 | 0
10 | 2 | 5 | 11 | 0 | 0
11 | 2 | 6 | 11 1 0 | 0




la consulta es la siguiente:

SELECT productos.imágen, ramas.rama_id, nodo_1.nombre

FROM productos INNER JOIN (ramas LEFT JOIN categorías AS nodo_1 ON ramas.nodo_1 = nodo_1.categoría_id) ON productos.rama_id = ramas.rama_id



el resultado de Acces es este:



imágen | rama_id | nombre
seda azul | 1 | telas
gamusa roja | 2 | telas
toalla verde | 3 | telas
toalla roja | 3 | telas
polo de verano | 4 | ropa
polo de verano verde | 4 | ropa
falda de verano | 5 | ropa
falda de verano verde | 5 | ropa
pantalón de verano | 6 | ropa
vermuda de verano | 7 | ropa
vermuda de verano floreada | 7 | ropa
vermuda de verano naranja | 7 | ropa
polo de invierno | 8 | ropa
polo de invierno azul | 8 | ropa
polo de invierno blanco | 8 | ropa
pantalón de invierno | 10 | ropa


el resultado en PhpMyAdmin tiene casi 200 registros. ¿Cual de los dos sería el correcto? ¿Por qué se dan estas diferencias? Gracias.
  #2 (permalink)  
Antiguo 05/05/2004, 01:44
 
Fecha de Ingreso: abril-2003
Ubicación: Madrid
Mensajes: 707
Antigüedad: 21 años
Puntos: 0
Pues con esa serie de datos y la consulta tal y como la escribes, el resultado de access es correcto, analiza que datos de más te está devolviendo PhpMyAdmin, y si la consulta es exactamente igual, no vayas a cambiar un paréntesis y entonces el resultado cambiaría


Saludos
  #3 (permalink)  
Antiguo 05/05/2004, 19:21
 
Fecha de Ingreso: mayo-2004
Mensajes: 27
Antigüedad: 20 años
Puntos: 0
He simplificado mis tablas para ver si otros se animan a ayudarme

Hola. Acá están las tablas:

- categorías:

| categoría_id | nombre |
| 1 | telas |
| 2 | ropa |


- productos:

| producto_id | rama_id | imágen |
| 1 | 2 | polo de verano |
| 2 | 1 | gamusa roja |


- ramas:

| rama_id | nodo_1 |
| 1 | 1 |
| 2 | 2 |


La consulta que hago es la siguiente (también la he simplificado):

SELECT *
FROM productos
INNER JOIN (
ramas
LEFT JOIN categorías ON ramas.nodo_1 = categorías.categoría_id
) ON productos.rama_id = ramas.rama_id


La respuesta de access es esta:

| producto_id | productos.rama_id | imágen | ramas.rama_id | nodo_1 | categoría_id | nombre |
| 2 | 1 | gamusa roja | 1 | 1 | 1 | telas |
| 1 | 2 | polo de verano | 2 | 2 | 2 | ropa |


La respuesta de SQL Server es esta:

| producto_id | rama_id | imágen | rama_id | nodo_1 | categoría_id | nombre |
| 1 | 2 | polo de verano | 1 | 1 | NULL | NULL |
| 2 | 1 | gamusa roja | 1 | 1 | 1 | telas |
| 1 | 2 | polo de verano | 2 | 2 | 2 | ropa |
| 2 | 1 | gamusa roja | 2 | 2 | NULL | NULL |
  #4 (permalink)  
Antiguo 06/05/2004, 01:50
 
Fecha de Ingreso: abril-2003
Ubicación: Madrid
Mensajes: 707
Antigüedad: 21 años
Puntos: 0
Los resultados que te da SQL Server, es como si tuvieras más datos en la tabla categorías, o bien, te está quitando los paréntesis y cambiando la consulta, ejecuta esa sentencia desde el analizados de consultas, no sea que la estés generando como una vista, y al guardarla, si utilizas un programa de diseño, tipo visual interdev te modifique el texto
  #5 (permalink)  
Antiguo 07/05/2004, 20:54
 
Fecha de Ingreso: mayo-2004
Mensajes: 27
Antigüedad: 20 años
Puntos: 0
He revisado bien mis tablas y la consulta y todo está como en mi pregunta. Podrá ser que el SQL Server esté mal configurado o fallando en algo?
  #6 (permalink)  
Antiguo 08/05/2004, 09:59
 
Fecha de Ingreso: mayo-2004
Mensajes: 27
Antigüedad: 20 años
Puntos: 0
Hice la prueba de cambiar esta consulta:

SELECT *
FROM productos
INNER JOIN (
ramas
LEFT JOIN categorías ON ramas.nodo_1 = categorías.categoría_id
) ON productos.rama_id = ramas.rama_id

por esta otra:

SELECT *
FROM productos
INNER JOIN (
categorías
RIGHT JOIN ramas ON categorías.categoría_id = ramas.nodo_1
) ON productos.rama_id = ramas.rama_id

y el resultado ahora sí me salió como debía, osea como el de Access. ¿Pero las dos consultas no están diciendo exáctamente lo mismo? Agradecería mucho que alguien haga la prueba con su propio SQL Server a ver si obtiene los mismos resultados.
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 21:32.