منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : جلب عدد اللاعبين الذين لعبو نصف الالعاب الموجوده في جدول.
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم 



محتاج اظهر الاتي من قاعده البيانات 



اللاعبون الذين لعبوا نصف أو أكثر من الألعاب  الموجوده  في جدول GameType، دعنا نفترض أن لدينا 6 ألعاب مختلفة في جدول "GameType" ... لذلك أريد عرض كل اللاعبين الذين لعبوا 3 ألعاب أو أكثر.

الفكره هي نقوم بجلب عدد الاسماء المختلفه للالعاب من جدول  GameType
وعدد الاسماء المختلفه للالعاب من جدول PlayerInAGame لكل لاعب 

و ناخذ جميع اللاعبين الذين لعبو اكثر من نصف الالعاب.
الرجاء التعديل على حلي .


هذا حلي الى الان :

PHP كود :
SELECT        dbo.Player.IDdbo.Player.surNamecount(DISTINCT dbo.PlayerInAGame.gameTypeName) AS games_playedcount(DISTINCT dbo.Game.gameTypeName) AS games_count
FROM            dbo
.Player INNER JOIN
                         dbo
.PlayerInAGame ON dbo.Player.ID dbo.PlayerInAGame.playerID INNER JOIN
                         dbo
.Game ON dbo.PlayerInAGame.gameTypeName dbo.Game.gameTypeName AND dbo.PlayerInAGame.gameDateTime dbo.Game.gameStartDateTime
GROUP BY dbo
.Player.IDdbo.Player.surNamedbo.Game.DealerInGame 






اريد الحل كالاتي :

PHP كود :
ID      surName     number of games played
d1      test1                3
d2      test2                4
d3      test3                3
d4      test4                6 


هذه هي الجداول : 
PHP كود :
create table Dealer

number int identity(1000,1primary key,
firstName nvarchar(20not null,
surName nvarchar(20not null,
birthDate date not null,
startWorkingDate date not null,
ID char(9check(ID like replicate('[0-9]',9)) not null unique
check(datediff(year,birthDate,startWorkingDate)>=24


create table GameType

name nvarchar(20primary key,
description nvarchar(20not null,
minimumPlayers tinyint check (minimumPlayers 0not null,
maximumPlayers tinyint check (maximumPlayers 0not null
check(minimumPlayers <= maximumPlayers)


create table Game

gameTypeName nvarchar(20references GameType(nameon delete cascade,
gameStartDateTime datetime,
gameEndTime time,
DealerInGame int not null references Dealer(number),
primary key(gameTypeName,gameStartDateTime


create table Player

ID char(9primary key,
firstName nvarchar(20not null,
surName nvarchar(20not null,
city nvarchar(20not null,
birthDate date check(datediff(year,birthDate,getdate())>=18not null
preferred nvarchar(20references GameType(nameon delete set null


create table PlayerInAGame

playerID char(9references Player(ID),
gameTypeName nvarchar(20),
gameDateTime datetime,
betAmount int check(betAmount>0not null,
winLosAmount int,
check((winLosAmount = -betAmount) or (winLosAmount>=betAmount)),
foreign key(gameTypeName,gameDateTimereferences 
Game
(gameTypeName,gameStartDateTime), primary 
key
(playerID,gameTypeName,gameDateTime) ) 

create table PlayerDealerRelation
(
dealerNumber int references Dealer(numberon delete cascade,
playerID char(9references Player(ID),
relationType char(1check(relationType in ('P','G','B','C','U','N')), 
primary key(dealerNumber,playerID

وعليكم السلام 

هذا الكود سيفي بالغرض :
[attachment=18253]

نتيجة الإستعلام :
[attachment=18256]

بعض البيانات الموجودة في جدول ( PlayerInAGame ) :
[attachment=18258]




                            [attachment=18255]
(31-05-18, 02:00 PM)عبدالله الدوسري كتب : [ -> ]وعليكم السلام 

هذا الكود سيفي بالغرض :


نتيجة الإستعلام :


بعض البيانات الموجودة في جدول ( PlayerInAGame ) :





                            

مشكور اخي عبدالله الدوسري ما قصرت