Retroceder   Foros del Web > Programación para sitios web > ASP Clásico

Respuesta
 
Herramientas Desplegado
Antiguo 07-abr-2008, 12:21   #1 (permalink)
i_e_s27 tiene algunos puntos positivos de karma
 
Avatar de i_e_s27
 
Fecha de Ingreso: marzo-2008
Ubicación: En mi casa
Mensajes: 195
Inner Join o ANSI?

Hola, queria saber que opcion es mejor a la hora de hacer una consulta a mi base de datos en Access:

Con Inner Join:

SELECT Facturas.*, Albaranes.* FROM Facturas INNER JOIN Albaranes ON Facturas.IdAlbaran = Albaranes.IdAlbaran WHERE Facturas.IdCliente = 325

...o en formato ANSI:

SELECT Facturas.*, Albaranes.* FROM Facturas, Albaranes WHERE Facturas.IdAlbaran = Albaranes.IdAlbaran AND Facturas.IdCliente = 325

Por ahi he leido que Oracle no soporta Inner Join, y que es un mal uso del SQL. Lo que quiero saber es cual es mas versatil si algun dia tengo que migrar de base de datos.

Muchas Gracias!
i_e_s27 está desconectado   Responder Citando
Antiguo 07-abr-2008, 12:31   #2 (permalink)
Moderador
u_goldman llegará a ser famoso muy prontou_goldman llegará a ser famoso muy prontou_goldman llegará a ser famoso muy pronto
 
Avatar de u_goldman
 
Fecha de Ingreso: noviembre-2002
Ubicación: LA
Mensajes: 7.265
Enviar un mensaje por MSN a u_goldman
Re: Inner Join o ANSI?

Hola i_e_s27, que yo sepa INNER JOIN es ANSI, y de hecho tanto el JOIN implícito como el explícito es ANSI (auque puedo estar equivocado). Hablando de un JOIN externo, entonces para que sea ANSI deberías utilizar el modificador OUTER, pero para el interno, sirve indistintamente.


Saludos
__________________
¿Qué darías por vivir un sueño?
u_goldman esta en línea ahora   Responder Citando
Antiguo 07-abr-2008, 13:06   #3 (permalink)
i_e_s27 tiene algunos puntos positivos de karma
 
Avatar de i_e_s27
 
Fecha de Ingreso: marzo-2008
Ubicación: En mi casa
Mensajes: 195
Re: Inner Join o ANSI?

Ahh, gracias por sacarme la duda

Ahora tengo el problema de que quise implementar esto, y me tira este error:

Tipo de error:
ADODB.Recordset (0x800A0CC1)
No se encontró el elemento en la colección que corresponde con el nombre o el ordinal pedido.

En la linea marcada en rojo:

Código:
	If Request.form("subcategoria") = "" Then
		Response.Write("Se encontro un error al recoger datos del formulario")
		Exit Sub
	End If
	Dim rsProductos
	Dim strSQL_Productos
	Set rsProductos = Server.CreateObject("ADODB.Recordset")
	
	strSQL_Productos = "SELECT tblproductos.id, tblproductos.nombre, tblproductos.categoria_asociada, tblproductos.subcategoria_asociada, tblcategorias.nombre_categoria, tblsubcategorias.nombre_subcategoria FROM tblproductos, tblcategorias, tblsubcategorias WHERE tblproductos.categoria_asociada = tblcategorias.id AND tblproductos.subcategoria_asociada = tblsubcategorias.id AND tblproductos.subcategoria_asociada = " & Request.form("subcategoria")
	
	rsProductos.Open strSQL_Productos, adoCon, adOpenStatic, adLockReadOnly
	
	If rsProductos.RecordCount > 0 Then
%>
  <tr>
    <td bgcolor="#FFFFFF"><p>&nbsp;</p>
    <table width="95%" border="0" align="center" cellpadding="0" cellspacing="0">
      <tr>
        <td width="3%"><img src="images/flechita.gif" alt="&gt;" width="10" height="10" /></td>
        <td width="97%"><p>Imposible eliminar la Subcategoria &quot;<%Response.Write(rsProductos("tblsubcategorias.nombre_subcategoria"))%>&quot;</p>
          <p>Todavia  tiene productos asociados a ella, primero modifique dichos productos:</p>
          <table width="100%" border="1" align="center" cellpadding="0" cellspacing="0">
            <tr>
              <td width="13%"><div align="center">ID</div></td>
              <td width="35%"><div align="center">Nombre</div></td>
              <td width="26%"><div align="center">Categoria</div></td>
              <td width="26%"><div align="center">Subcategoria</div></td>
            </tr>
<%
		Dim i
		For i=1 to rsProductos.RecordCount
%>
            <tr>
              <td><%Response.Write(rsProductos("tblproductos.id"))%></td>
              <td><%Response.Write(rsProductos("tblproductos.nombre"))%></td>
              <td><%Response.Write(rsProductos("tblcategorias.nombre_categoria"))%></td>
              <td><%Response.Write(rsProductos("tblsubcategorias.nombre_subcategoria"))%></td>
            </tr>
<%
			rsProductos.MoveNext
		Next 'i
%>
          </table>          
          <p>&nbsp;</p></td>
      </tr>
    </table>
    </td>
  </tr>
Que puede ser? mi construccion SQL esta bien?

Yo tengo 3 tablas:

Una que tiene los productos, con su id, nombre, la categoria a la que pertenecen (en ID), y la subcategoria a la que pertenecen (en ID)

Una donde tengo las categorias que tiene: Id de la categoria, Nombre

Y la ultima donde estan las subcategorias tiene: Id de la subcategoria, nombre, Id de la categoria a la que pertenece.

La relacion que deseo establecer esta marcada con colores.

Gracias por la ayuda!
i_e_s27 está desconectado   Responder Citando
Antiguo 07-abr-2008, 13:10   #4 (permalink)
Moderador
u_goldman llegará a ser famoso muy prontou_goldman llegará a ser famoso muy prontou_goldman llegará a ser famoso muy pronto
 
Avatar de u_goldman
 
Fecha de Ingreso: noviembre-2002
Ubicación: LA
Mensajes: 7.265
Enviar un mensaje por MSN a u_goldman
Re: Inner Join o ANSI?

Hola de nuevo, el error es que a tu recordset no le interesa de donde viene el dato, es decir, tabla.campo no es correcto, con el nombre del campo basta:

rsProductos("nombre_subcategoria")

Saludos
__________________
¿Qué darías por vivir un sueño?
u_goldman esta en línea ahora   Responder Citando
Antiguo 07-abr-2008, 13:20   #5 (permalink)
i_e_s27 tiene algunos puntos positivos de karma
 
Avatar de i_e_s27
 
Fecha de Ingreso: marzo-2008
Ubicación: En mi casa
Mensajes: 195
Re: Inner Join o ANSI?

Gracias!!! Ahi andubo!
i_e_s27 está desconectado   Responder Citando
Antiguo 07-abr-2008, 13:27   #6 (permalink)
i_e_s27 tiene algunos puntos positivos de karma
 
Avatar de i_e_s27
 
Fecha de Ingreso: marzo-2008
Ubicación: En mi casa
Mensajes: 195
Re: Inner Join o ANSI?

Aunque ahora me surgio una duda hipotetica...

Que pasaria si yo tengo 2 tablas, y en las dos tengo un campo que se llama id, como hago para mostrar el id de una u otra respectivamente?
i_e_s27 está desconectado   Responder Citando
Antiguo 07-abr-2008, 13:31   #7 (permalink)
Moderador
u_goldman llegará a ser famoso muy prontou_goldman llegará a ser famoso muy prontou_goldman llegará a ser famoso muy pronto
 
Avatar de u_goldman
 
Fecha de Ingreso: noviembre-2002
Ubicación: LA
Mensajes: 7.265
Enviar un mensaje por MSN a u_goldman
Re: Inner Join o ANSI?

Utilizas un alias:

Código:
SELECT tabla1.campo1, tabla2.campo1 as otrocampo FROM tabla1 INNER JOIN tabla2 ON tabla1.id = tabla2.id 

<%=rs("campo1")%><br/>
<%=rs("otrocampo")%><br/>
Saludos
__________________
¿Qué darías por vivir un sueño?
u_goldman esta en línea ahora   Responder Citando
Antiguo 07-abr-2008, 13:47   #8 (permalink)
i_e_s27 tiene algunos puntos positivos de karma
 
Avatar de i_e_s27
 
Fecha de Ingreso: marzo-2008
Ubicación: En mi casa
Mensajes: 195
Re: Inner Join o ANSI?

Un alias? jaja, que bueno, jamas se me hubiese ocurrido.

Muchisimas gracias otra vez!
i_e_s27 está desconectado   Responder Citando
Respuesta
No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 17:10.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93