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

Ayuda consulta SQL

Estas en el tema de Ayuda consulta SQL en el foro de SQL Server en Foros del Web. Quiero mostrar unos datos por pantalla, pero esos datos estan diferenciados por 2 campos que se encuentran en tablas diferentes. Primero os pongo las tablas ...
  #1 (permalink)  
Antiguo 01/07/2010, 07:32
 
Fecha de Ingreso: diciembre-2008
Mensajes: 27
Antigüedad: 15 años, 4 meses
Puntos: 0
Ayuda consulta SQL

Quiero mostrar unos datos por pantalla, pero esos datos estan diferenciados por 2 campos que se encuentran en tablas diferentes.

Primero os pongo las tablas como son sus estructuras para que podais ayudarme mejor:

Tabla Character
Código:
CREATE TABLE [dbo].[Character] (
	[AccountID] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
	[Name] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
	[cLevel] [int] NULL ,
	[LevelUpPoint] [int] NULL ,
	[Class] [tinyint] NULL ,
	[Experience] [int] NULL ,
	[Strength] [smallint] NULL ,
	[Dexterity] [smallint] NULL ,
	[Vitality] [smallint] NULL ,
	[Energy] [smallint] NULL ,
	[Inventory] [varbinary] (1728) NULL ,
	[MagicList] [varbinary] (180) NULL ,
	[Money] [int] NULL ,
	[Life] [real] NULL ,
	[MaxLife] [real] NULL ,
	[Mana] [real] NULL ,
	[MaxMana] [real] NULL ,
	[MapNumber] [smallint] NULL ,
	[MapPosX] [smallint] NULL ,
	[MapPosY] [smallint] NULL ,
	[MapDir] [tinyint] NULL ,
	[PkCount] [int] NULL ,
	[PkLevel] [int] NULL ,
	[PkTime] [int] NULL ,
	[MDate] [smalldatetime] NULL ,
	[LDate] [smalldatetime] NULL ,
	[CtlCode] [tinyint] NULL ,
	[DbVersion] [tinyint] NULL ,
	[Quest] [varbinary] (50) NULL ,
	[Leadership] [smallint] NULL ,
	[ChatLimitTime] [smallint] NULL ,
	[FruitPoint] [int] NULL ,
	[zs_count] [int] NULL ,
	[ZY] [int] NULL ,
	[FQBZ] [int] NULL ,
	[FQCount] [int] NULL ,
	[FQName] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
	[Resets] [int] NOT NULL ,
	[SCFMasterLevel] [int] NULL ,
	[SCFMasterPoints] [int] NULL ,
	[SCFMasterSkills] [varbinary] (300) NULL ,
	[SCFPCPoints] [int] NULL ,
	[SCFMarried] [int] NULL ,
	[SCFMarryHusbandWife] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
	
) ON [PRIMARY]
GO

Tabla Guild


Código:
CREATE TABLE [dbo].[Guild] (
	[G_Name] [varchar] (8) COLLATE Chinese_PRC_CI_AS NOT NULL ,
	[G_Mark] [varbinary] (32) NULL ,
	[G_Score] [int] NULL ,
	[G_Master] [varchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,
	[G_Count] [int] NULL ,
	[G_Notice] [varchar] (60) COLLATE Chinese_PRC_CI_AS NULL ,
	[Number] [int] IDENTITY (1, 1) NOT NULL ,
	[G_Type] [int] NOT NULL ,
	[G_Rival] [int] NOT NULL ,
	[G_Union] [int] NOT NULL ,
	[MemberCount] [int] NULL 
) ON [PRIMARY]
GO
Tabla MEMB_STAT

Código:
CREATE TABLE [dbo].[MEMB_STAT] (
	[memb___id] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
	[ConnectStat] [tinyint] NULL ,
	[ServerName] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
	[IP] [varchar] (15) COLLATE Chinese_PRC_CI_AS NULL ,
	[ConnectTM] [smalldatetime] NULL ,
	[DisConnectTM] [smalldatetime] NULL ,
	[OnlineHours] [int] NULL 
) ON [PRIMARY]
GO


He pensado que se tendria que comparar las 3 tablas porque yo quiero hacer una consulta que me muestre el G_Name. G_Score, G_Master de la tabla Guild pero solo las que el ServerName de la tabla MEMB_STAT sea 'FAST'

Primero probe de hacer la consulta entre las 2 tablas pero me di cuenta que no habia campos comunes para relacionar por eso quise poner la tabla Character, intermedia para comparar campos iguales.


Hice esta consulta para que me entendais mejor que busco, pero esta consulta no funciona correctamente:

Select g.G_Name, g.G_Master, g.G_Score from Character as c JOIN MEMB_STAT as m ON (c.accountid=m.memb___id) JOIN Guild as g ON (g.G_Name=c.Name) Where ServerName='FAST'



Haber si alguien sabe como podria hacer esta consulta o el error que cometo, le he dado miles de vueltas y ya no se por donde cogerlo.

Gracias
  #2 (permalink)  
Antiguo 01/07/2010, 09:26
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Ayuda consulta SQL

El problema es que o tu no conoces las tablas o simplemente no hay relacion entre ellas.
Primero soluciona ese problema, luego vemos tu query.
Revisa tu datos, y ve como se relacionan las tablas. Luego muestranos algunos registros para ver como ayudarte.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #3 (permalink)  
Antiguo 01/07/2010, 09:45
 
Fecha de Ingreso: diciembre-2008
Mensajes: 27
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Ayuda consulta SQL

Si conozco mis tablas pero nose como relacionarlas, por eso os puse las query de cada tabla con sus columnas, y debajo mi consulta.

Que hay de malo?
  #4 (permalink)  
Antiguo 01/07/2010, 10:11
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Ayuda consulta SQL

Te sale algun mensaje de error? O el resultado no es el esperado o no sale nada?
Es poco usual hacer un join por un campo Name.
Te pedi que nos muestres algunos registros...
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #5 (permalink)  
Antiguo 01/07/2010, 10:21
 
Fecha de Ingreso: diciembre-2008
Mensajes: 27
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Ayuda consulta SQL

No me aparece ningun error solamente que no sale lo que busco.

Lo relaciono por el Name porque en la tabla Character el Name y en la tabla Guild el G_Master son lo mismo, mientras que en el MEMB_STAT no aparece el name pero si el ID que es el identificador, por eso como en la tabla Character el identificador esta presente quise relacionar las 3 tablas
  #6 (permalink)  
Antiguo 01/07/2010, 10:35
Avatar de -rommel_  
Fecha de Ingreso: junio-2008
Ubicación: Lima
Mensajes: 360
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Ayuda consulta SQL

muestranos registros de cada una de las tablas
  #7 (permalink)  
Antiguo 01/07/2010, 10:46
 
Fecha de Ingreso: diciembre-2008
Mensajes: 27
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Ayuda consulta SQL

Registros de la tabla MEMB_STAT



Registros de la tabla CHARACTER



Registros de la tabla GUILD

  #8 (permalink)  
Antiguo 01/07/2010, 11:43
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Ayuda consulta SQL

Y cual es el resultado esperado?
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #9 (permalink)  
Antiguo 01/07/2010, 11:44
 
Fecha de Ingreso: diciembre-2008
Mensajes: 27
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Ayuda consulta SQL

Con esa consulta no me sale ningun dato aora mismo
  #10 (permalink)  
Antiguo 01/07/2010, 12:08
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Ayuda consulta SQL

A ver, pregunto de otra forma: que debiera mostrar esto?
Código SQL:
Ver original
  1. SELECT g.G_Name, g.G_Master, g.G_Score
  2. FROM CHARACTER AS c
  3. JOIN MEMB_STAT AS m ON (c.accountid=m.memb___id)
  4. JOIN Guild AS g ON (g.G_Name=c.Name)
  5. WHERE ServerName='FAST'
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #11 (permalink)  
Antiguo 01/07/2010, 12:48
 
Fecha de Ingreso: diciembre-2008
Mensajes: 27
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Ayuda consulta SQL

Deberia mostrar el G_Name, G_Score, G_Master de las cuentas que tengan como ServerName ='FAST'
  #12 (permalink)  
Antiguo 01/07/2010, 13:41
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Ayuda consulta SQL

Puedes mostrar un pantallazo de lo que muestra tu query actualmente?
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #13 (permalink)  
Antiguo 01/07/2010, 13:44
 
Fecha de Ingreso: diciembre-2008
Mensajes: 27
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Ayuda consulta SQL

Esa consulta actualmente no muestra nada, no salen resultados, teoricamente tendrian q salir algun resultado, pero ni error ni resultados
  #14 (permalink)  
Antiguo 01/07/2010, 13:49
Avatar de -rommel_  
Fecha de Ingreso: junio-2008
Ubicación: Lima
Mensajes: 360
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Ayuda consulta SQL

que raro con la consulta qu ete dio flaviovich deberia salirte todos los registros de CHARACTER... flaviovich ese JOIN es el FULL JOIN verdad?
  #15 (permalink)  
Antiguo 01/07/2010, 13:50
 
Fecha de Ingreso: diciembre-2008
Mensajes: 27
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Ayuda consulta SQL

La consulta de favliovich es la que dije yo desde el principio.

Pero nose porque no muestra nada ni como hacerla para que muestre lo que busco
  #16 (permalink)  
Antiguo 01/07/2010, 13:58
Avatar de -rommel_  
Fecha de Ingreso: junio-2008
Ubicación: Lima
Mensajes: 360
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Ayuda consulta SQL

una pregunta... esos son tus datos verdaderos..??? porque en Guild solo hay 2 registros que no existe en Character...
  #17 (permalink)  
Antiguo 01/07/2010, 14:00
 
Fecha de Ingreso: diciembre-2008
Mensajes: 27
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Ayuda consulta SQL

Si son datos verdaderos
  #18 (permalink)  
Antiguo 01/07/2010, 14:10
Avatar de -rommel_  
Fecha de Ingreso: junio-2008
Ubicación: Lima
Mensajes: 360
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Ayuda consulta SQL

entonces de tu ejemplo...

SELECT g.G_Name, g.G_Master, g.G_Score

FROM Character AS c

JOIN MEMB_STAT AS m ON (c.accountid=m.memb___id)

JOIN Guild AS g ON (g.G_Name=c.Name)

WHERE ServerName='FAST'


Al momento de hacer el join de Character a MENB_STAT (accountid, memb___id)
solo te cogera
6 registros
AccountId ServerName memb___id Name
123456 Fast 123456 Imperial
123456 Fast 123456 BK
123456 Fast 123456 MG
123456 Fast 123456 DL
123456 Fast 123456 Sum
Admin Fast Admin Admin

al mmomento de hacer join con GUILD (G_Name y Name)
de los 6 valores:
Imperial
BK
MG
DL
Sum
Admin
ninguno se encuentra en Guild... estoy en lo cierto??? alguien puede decirme si estoy bien???
Guild tiene valores como: asdasd y Pendulum y ninguno esta en "Name" de Character
  #19 (permalink)  
Antiguo 01/07/2010, 14:15
 
Fecha de Ingreso: diciembre-2008
Mensajes: 27
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Ayuda consulta SQL

Con esta consulta tendria q salir por lo menos el Guild de Imperial porque esta en las 3 tablas, en el name de caracter y en el G_Master

Rectifico no es: g.G_Name = c.Name sino, g.G_Master = c.Name
  #20 (permalink)  
Antiguo 01/07/2010, 14:25
Avatar de -rommel_  
Fecha de Ingreso: junio-2008
Ubicación: Lima
Mensajes: 360
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Ayuda consulta SQL

entonces... de hecho algun dato ahi esta con un espacio al final... ya que es VARCHAR... elimina espacio en blanco.. con TRIMa ver intenta:
Código MySQL:
Ver original
  1. SELECT g.G_Name, g.G_Master, g.G_Score
  2. FROM Character AS c
  3. JOIN MEMB_STAT AS m ON (trim(c.accountid)=trim(m.memb___id))
  4. JOIN Guild AS g ON (trim(g.G_Master)=trim(c.Name))
  5. WHERE ServerName like '%FAST%'
pero anda probando de tabla a tabla si es que te sale... cuando le haces el join de GUILD a CHARACTER si te hace la juntura?...
  #21 (permalink)  
Antiguo 01/07/2010, 14:28
 
Fecha de Ingreso: diciembre-2008
Mensajes: 27
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Ayuda consulta SQL

Si le quito eso de TRIM si me aparece el Guild de Imperial el q tenia que salir, puede que ya este solucionado, lo probare bien y si tengo mas problemas ya escribire nuevamente aqui.

gracias atodos
  #22 (permalink)  
Antiguo 01/07/2010, 14:30
Avatar de -rommel_  
Fecha de Ingreso: junio-2008
Ubicación: Lima
Mensajes: 360
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Ayuda consulta SQL

Código SQL:
Ver original
  1. SELECT g.G_Name, g.G_Master, g.G_Score
  2. FROM Guild G
  3. JOIN CHARACTER C ON (C.Name = G.G_Master)
que te sale cuando ejecutas esta consulta?
  #23 (permalink)  
Antiguo 25/03/2011, 19:57
 
Fecha de Ingreso: marzo-2011
Mensajes: 1
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Ayuda consulta SQL

hola a todos
se poco de sql, y con estas mismas tablas y datos quiero hacer esto tengo una query con los siguientes datos

$query = 'Select Name, Class, clevel, Resets from dbo.Character where CtlCode < 1 order by Resets desc ,cLevel desc';

ahora de la tabla MEMB_STAT me interesan que se agrege a la query estos campos ConecctStat y Onlinehours

que debo hacer?

de antemano gracias
saludos Jasm

Etiquetas: sql
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

SíEste tema le ha gustado a 2 personas




La zona horaria es GMT -6. Ahora son las 01:14.