[ ne.rad @ 18.12.2011. 21:22 ] @
Pozdrav svima.

Dobio sam da rešim zadatak ali sam zaglavio sa problemom i neuspevam doći do rešenja. U pitanju je neka simulacija nagradne igre. Korisnik bira 6 cifara u rasponu od 1-50. Izvlačenje se sastoji od 20 brojeva iz tog raspona.

Kako da uporedim 6 cifara sa kupona sa 20 cifara izvlačenja?

Recimo da je situacija sa tabelama ovakva:

Code (sql):


USE [master]
GO
/****** Object:  Database [zadatak]    Script Date: 12/18/2011 22:13:14 ******/
CREATE DATABASE [zadatak] ON  PRIMARY
( NAME = N'zadatak', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\zadatak.mdf' , SIZE = 3072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
 LOG ON
( NAME = N'zadatak_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\zadatak_log.ldf' , SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
GO
ALTER DATABASE [zadatak] SET COMPATIBILITY_LEVEL = 100
GO
IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled'))
BEGIN
EXEC [zadatak].[dbo].[sp_fulltext_database] @action = 'enable'
END
GO
ALTER DATABASE [zadatak] SET ANSI_NULL_DEFAULT OFF
GO
ALTER DATABASE [zadatak] SET ANSI_NULLS OFF
GO
ALTER DATABASE [zadatak] SET ANSI_PADDING OFF
GO
ALTER DATABASE [zadatak] SET ANSI_WARNINGS OFF
GO
ALTER DATABASE [zadatak] SET ARITHABORT OFF
GO
ALTER DATABASE [zadatak] SET AUTO_CLOSE OFF
GO
ALTER DATABASE [zadatak] SET AUTO_CREATE_STATISTICS ON
GO
ALTER DATABASE [zadatak] SET AUTO_SHRINK OFF
GO
ALTER DATABASE [zadatak] SET AUTO_UPDATE_STATISTICS ON
GO
ALTER DATABASE [zadatak] SET CURSOR_CLOSE_ON_COMMIT OFF
GO
ALTER DATABASE [zadatak] SET CURSOR_DEFAULT  GLOBAL
GO
ALTER DATABASE [zadatak] SET CONCAT_NULL_YIELDS_NULL OFF
GO
ALTER DATABASE [zadatak] SET NUMERIC_ROUNDABORT OFF
GO
ALTER DATABASE [zadatak] SET QUOTED_IDENTIFIER OFF
GO
ALTER DATABASE [zadatak] SET RECURSIVE_TRIGGERS OFF
GO
ALTER DATABASE [zadatak] SET  DISABLE_BROKER
GO
ALTER DATABASE [zadatak] SET AUTO_UPDATE_STATISTICS_ASYNC OFF
GO
ALTER DATABASE [zadatak] SET DATE_CORRELATION_OPTIMIZATION OFF
GO
ALTER DATABASE [zadatak] SET TRUSTWORTHY OFF
GO
ALTER DATABASE [zadatak] SET ALLOW_SNAPSHOT_ISOLATION OFF
GO
ALTER DATABASE [zadatak] SET PARAMETERIZATION SIMPLE
GO
ALTER DATABASE [zadatak] SET READ_COMMITTED_SNAPSHOT OFF
GO
ALTER DATABASE [zadatak] SET HONOR_BROKER_PRIORITY OFF
GO
ALTER DATABASE [zadatak] SET  READ_WRITE
GO
ALTER DATABASE [zadatak] SET RECOVERY FULL
GO
ALTER DATABASE [zadatak] SET  MULTI_USER
GO
ALTER DATABASE [zadatak] SET PAGE_VERIFY CHECKSUM
GO
ALTER DATABASE [zadatak] SET DB_CHAINING OFF
GO
EXEC sys.sp_db_vardecimal_storage_format N'zadatak', N'ON'
GO
USE [zadatak]
GO
/****** Object:  Table [dbo].[izvlacenje]    Script Date: 12/18/2011 22:13:15 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[izvlacenje](
     [izvlacenje_id] [INT] NOT NULL,
     [vreme] [datetime] NULL,
     [broj1] [INT] NULL,
     [broj2] [INT] NULL,
     [broj3] [INT] NULL,
     [broj4] [INT] NULL,
     [broj5] [INT] NULL,
     [broj6] [INT] NULL,
     [broj7] [INT] NULL,
     [broj8] [INT] NULL,
     [broj9] [INT] NULL,
     [broj10] [INT] NULL,
     [broj11] [INT] NULL,
     [broj12] [INT] NULL,
     [broj13] [INT] NULL,
     [broj14] [INT] NULL,
     [broj15] [INT] NULL,
     [broj16] [INT] NULL,
     [broj17] [INT] NULL,
     [broj18] [INT] NULL,
     [broj19] [INT] NULL,
     [broj20] [INT] NULL,
 CONSTRAINT [PK_izvlacenje] PRIMARY KEY CLUSTERED
(
     [izvlacenje_id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object:  Table [dbo].[kupon]    Script Date: 12/18/2011 22:13:15 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[kupon](
     [kupon_id] [INT] NOT NULL,
     [izvlacenje_id] [INT] NULL,
     [vreme] [datetime] NULL,
     [broj1] [INT] NULL,
     [broj2] [INT] NULL,
     [broj3] [INT] NULL,
     [broj4] [INT] NULL,
     [broj5] [INT] NULL,
     [broj6] [INT] NULL,
 CONSTRAINT [PK_kupon] PRIMARY KEY CLUSTERED
(
     [kupon_id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object:  ForeignKey [FK_kupon_izvlacenje]    Script Date: 12/18/2011 22:13:15 ******/
ALTER TABLE [dbo].[kupon]  WITH CHECK ADD  CONSTRAINT [FK_kupon_izvlacenje] FOREIGN KEY([izvlacenje_id])
REFERENCES [dbo].[izvlacenje] ([izvlacenje_id])
GO
ALTER TABLE [dbo].[kupon] CHECK CONSTRAINT [FK_kupon_izvlacenje]
GO

 



Kako da dođem do rešenja da za svaki odigrani kupon dobijem broj pogodataka?

[ Dusan Kondic @ 19.12.2011. 08:08 ] @
Bolje bi bilo da si podatke upisao vertikalno (jedna kolona za brojeve tako da svaki broj ide u jedan slog). Na ovaj način bi imao mnogo više slogova ali bi ti bilo mnogo lakše i brže da izvršavaš komande tipa EXISTS IN ili JOIN.
Ako ne želiš da menjaš strukturu tabela, predlažem da u front-end-u rešiš problem popunjavanjem nekog niza ili liste i kroz petlju proveriš za svaki broj "if Contains ...". Isto je moguće i u SQL-u, ali je "preskupo".
Izaberi način pa ćemo pomoći.
[ ne.rad @ 19.12.2011. 08:47 ] @
Dušane, nije nikakav problem da prepravim tabele tako da izabrane brojeve i izvučene napišem kao neki niz. Na žalost, moje znanje nije toliko da shvatam kako ću time rešiti brojanje.

Ukoliko brojeve na kuponu napišem u obliku 041121370926 (4,11,21,37,9,26) i istom tom logikom napišem brojeve u tabeli izvlacenje, kako da dođem do prebrojavanja?
[ Dusan Kondic @ 19.12.2011. 10:34 ] @
Kreiranje tabela:
Code:

IF  EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_IzvlacenjeBroj_izvlacenje]') AND parent_object_id = OBJECT_ID(N'[dbo].[IzvlacenjeBroj]'))
ALTER TABLE [dbo].[IzvlacenjeBroj] DROP CONSTRAINT [FK_IzvlacenjeBroj_izvlacenje]
GO
IF  EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_kupon_izvlacenje]') AND parent_object_id = OBJECT_ID(N'[dbo].[kupon]'))
ALTER TABLE [dbo].[kupon] DROP CONSTRAINT [FK_kupon_izvlacenje]
GO
IF  EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_KuponBroj_kupon]') AND parent_object_id = OBJECT_ID(N'[dbo].[KuponBroj]'))
ALTER TABLE [dbo].[KuponBroj] DROP CONSTRAINT [FK_KuponBroj_kupon]
GO
IF  EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_KuponBroj_kupon]') AND parent_object_id = OBJECT_ID(N'[dbo].[KuponBroj]'))
ALTER TABLE [dbo].[KuponBroj] DROP CONSTRAINT [FK_KuponBroj_kupon]
GO
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[KuponBroj]') AND type in (N'U'))
DROP TABLE [dbo].[KuponBroj]
GO
IF  EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_IzvlacenjeBroj_izvlacenje]') AND parent_object_id = OBJECT_ID(N'[dbo].[IzvlacenjeBroj]'))
ALTER TABLE [dbo].[IzvlacenjeBroj] DROP CONSTRAINT [FK_IzvlacenjeBroj_izvlacenje]
GO
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[IzvlacenjeBroj]') AND type in (N'U'))
DROP TABLE [dbo].[IzvlacenjeBroj]
GO
IF  EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_kupon_izvlacenje]') AND parent_object_id = OBJECT_ID(N'[dbo].[kupon]'))
ALTER TABLE [dbo].[kupon] DROP CONSTRAINT [FK_kupon_izvlacenje]
GO
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[kupon]') AND type in (N'U'))
DROP TABLE [dbo].[kupon]
GO
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[izvlacenje]') AND type in (N'U'))
DROP TABLE [dbo].[izvlacenje]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[izvlacenje]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[izvlacenje](
    [izvlacenje_id] [int] IDENTITY(1,1) NOT NULL,
    [vreme] [datetime] NULL,
 CONSTRAINT [PK_izvlacenje] PRIMARY KEY CLUSTERED 
(
    [izvlacenje_id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[kupon]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[kupon](
    [kupon_id] [int] IDENTITY(1,1) NOT NULL,
    [izvlacenje_id] [int] NOT NULL,
    [VlasnikKupona] [nvarchar](50) NOT NULL,
    [OznakaKupona] [varchar](20) NOT NULL,
 CONSTRAINT [PK_kupon] PRIMARY KEY CLUSTERED 
(
    [kupon_id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
END
GO
SET ANSI_PADDING OFF
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[IzvlacenjeBroj]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[IzvlacenjeBroj](
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [izvlacenje_id] [int] NOT NULL,
    [Broj] [int] NOT NULL,
 CONSTRAINT [PK_IzvlacenjeBroj] PRIMARY KEY CLUSTERED 
(
    [Id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
END
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[KuponBroj]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[KuponBroj](
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [kupon_id] [int] NOT NULL,
    [Broj] [int] NOT NULL,
 CONSTRAINT [PK_KuponBroj] PRIMARY KEY CLUSTERED 
(
    [Id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
END
GO
IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_IzvlacenjeBroj_izvlacenje]') AND parent_object_id = OBJECT_ID(N'[dbo].[IzvlacenjeBroj]'))
ALTER TABLE [dbo].[IzvlacenjeBroj]  WITH CHECK ADD  CONSTRAINT [FK_IzvlacenjeBroj_izvlacenje] FOREIGN KEY([izvlacenje_id])
REFERENCES [dbo].[izvlacenje] ([izvlacenje_id])
GO
IF  EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_IzvlacenjeBroj_izvlacenje]') AND parent_object_id = OBJECT_ID(N'[dbo].[IzvlacenjeBroj]'))
ALTER TABLE [dbo].[IzvlacenjeBroj] CHECK CONSTRAINT [FK_IzvlacenjeBroj_izvlacenje]
GO
IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_kupon_izvlacenje]') AND parent_object_id = OBJECT_ID(N'[dbo].[kupon]'))
ALTER TABLE [dbo].[kupon]  WITH CHECK ADD  CONSTRAINT [FK_kupon_izvlacenje] FOREIGN KEY([izvlacenje_id])
REFERENCES [dbo].[izvlacenje] ([izvlacenje_id])
GO
IF  EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_kupon_izvlacenje]') AND parent_object_id = OBJECT_ID(N'[dbo].[kupon]'))
ALTER TABLE [dbo].[kupon] CHECK CONSTRAINT [FK_kupon_izvlacenje]
GO
IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_KuponBroj_kupon]') AND parent_object_id = OBJECT_ID(N'[dbo].[KuponBroj]'))
ALTER TABLE [dbo].[KuponBroj]  WITH CHECK ADD  CONSTRAINT [FK_KuponBroj_kupon] FOREIGN KEY([kupon_id])
REFERENCES [dbo].[kupon] ([kupon_id])
GO
IF  EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_KuponBroj_kupon]') AND parent_object_id = OBJECT_ID(N'[dbo].[KuponBroj]'))
ALTER TABLE [dbo].[KuponBroj] CHECK CONSTRAINT [FK_KuponBroj_kupon]
GO

Tabela "Izvlacenje" predstavlja sam događaj izvlačenja i pored osnovnih podataka može joj se dodati npr. voditelj, sponzor i sl.
Tabela "IzvlačenjeBroj" predstavlja brojeve koji su izvučeni u određenom izvlačenju. Ona je referencirana na tabelu "Kupon".
Tabela "Kupon" predstavlja fizički kupon i zbog toga sam joj dodao polja VlasnikKupona i OznakaKupona (može se dodati npr. mesto prodaje kupona i sl.).
Tabela "KuponBroj" predstavlja zaokružene brojeve na kuponu.

Popunjavanje tabela (primer):
Code:

INSERT INTO Izvlacenje (Vreme) VALUES('2011-12-19')

DECLARE @IzvlacenjeId INT
SET @IzvlacenjeId = IDENT_CURRENT('Izvlacenje')

INSERT INTO IzvlacenjeBroj(Izvlacenje_Id, Broj) VALUES(@IzvlacenjeId, 3)
INSERT INTO IzvlacenjeBroj(Izvlacenje_Id, Broj) VALUES(@IzvlacenjeId, 42)
INSERT INTO IzvlacenjeBroj(Izvlacenje_Id, Broj) VALUES(@IzvlacenjeId, 16)
INSERT INTO IzvlacenjeBroj(Izvlacenje_Id, Broj) VALUES(@IzvlacenjeId, 27)
INSERT INTO IzvlacenjeBroj(Izvlacenje_Id, Broj) VALUES(@IzvlacenjeId, 7)
INSERT INTO IzvlacenjeBroj(Izvlacenje_Id, Broj) VALUES(@IzvlacenjeId, 12)
INSERT INTO IzvlacenjeBroj(Izvlacenje_Id, Broj) VALUES(@IzvlacenjeId, 33)
INSERT INTO IzvlacenjeBroj(Izvlacenje_Id, Broj) VALUES(@IzvlacenjeId, 34)
INSERT INTO IzvlacenjeBroj(Izvlacenje_Id, Broj) VALUES(@IzvlacenjeId, 42)
INSERT INTO IzvlacenjeBroj(Izvlacenje_Id, Broj) VALUES(@IzvlacenjeId, 21)
INSERT INTO IzvlacenjeBroj(Izvlacenje_Id, Broj) VALUES(@IzvlacenjeId, 9)
INSERT INTO IzvlacenjeBroj(Izvlacenje_Id, Broj) VALUES(@IzvlacenjeId, 19)
INSERT INTO IzvlacenjeBroj(Izvlacenje_Id, Broj) VALUES(@IzvlacenjeId, 49)
INSERT INTO IzvlacenjeBroj(Izvlacenje_Id, Broj) VALUES(@IzvlacenjeId, 38)
INSERT INTO IzvlacenjeBroj(Izvlacenje_Id, Broj) VALUES(@IzvlacenjeId, 5)
INSERT INTO IzvlacenjeBroj(Izvlacenje_Id, Broj) VALUES(@IzvlacenjeId, 15)
INSERT INTO IzvlacenjeBroj(Izvlacenje_Id, Broj) VALUES(@IzvlacenjeId, 44)
INSERT INTO IzvlacenjeBroj(Izvlacenje_Id, Broj) VALUES(@IzvlacenjeId, 30)
INSERT INTO IzvlacenjeBroj(Izvlacenje_Id, Broj) VALUES(@IzvlacenjeId, 11)
INSERT INTO IzvlacenjeBroj(Izvlacenje_Id, Broj) VALUES(@IzvlacenjeId, 40)

INSERT INTO Kupon (izvlacenje_id, VlasnikKupona, OznakaKupona) VALUES (@IzvlacenjeId, N'Milan Jovanović', '006387532')

DECLARE @KuponId INT
SET @KuponId = IDENT_CURRENT('Kupon')

INSERT INTO KuponBroj(Kupon_Id, Broj) VALUES(@KuponId, 8)
INSERT INTO KuponBroj(Kupon_Id, Broj) VALUES(@KuponId, 19)
INSERT INTO KuponBroj(Kupon_Id, Broj) VALUES(@KuponId, 23)
INSERT INTO KuponBroj(Kupon_Id, Broj) VALUES(@KuponId, 34)
INSERT INTO KuponBroj(Kupon_Id, Broj) VALUES(@KuponId, 36)
INSERT INTO KuponBroj(Kupon_Id, Broj) VALUES(@KuponId, 49)


Dobijenje podataka o pogođenim brojevima određenog izvlačena određenog kupona:
Code:

SELECT Kupon.VlasnikKupona, Kupon.OznakaKupona, KuponBroj.Broj 
FROM Kupon INNER JOIN KuponBroj ON Kupon.Kupon_Id = KuponBroj.Kupon_Id
INNER JOIN IzvlacenjeBroj ON IzvlacenjeBroj.Izvlacenje_Id = Kupon.Izvlacenje_Id AND KuponBroj.Broj = IzvlacenjeBroj.Broj
WHERE Kupon.Izvlacenje_Id = 1 AND Kupon.Kupon_Id = 1


Pozdrav
[ nadavesela @ 19.12.2011. 10:35 ] @
CREATE TABLE [dbo].[Izvlacenja](
[KoloId] [int] NOT NULL,
[IzvlacenjeId] [int] NOT NULL,
[IzvlacenjeBrojId] [smallint] NOT NULL,
[IzvlacenjeBroj] [smallint] NULL,
CONSTRAINT [PK_Izvlacenja] PRIMARY KEY CLUSTERED
(
[KoloId] ASC,
[IzvlacenjeId] ASC,
[IzvlacenjeBrojId] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

UDF koja sluzi za computed kolonu

CREATE FUNCTION [dbo].[fn_DaliBrojIzvucen](@Broj as smallint,@KoloId as int)
RETURNS tinyint
AS
BEGIN
DECLARE @izvucenbroj as tinyint
SET @izvucenbroj =(SELECT count(*) as izvucenbroj FROM Izvlacenja WHERE KoloId=@KoloId and IzvlacenjeBroj=@Broj )
RETURN @izvucenbroj
END


CREATE TABLE [dbo].[Kupon](
[KoloId] [int] NOT NULL,
[KuponId] [int] NOT NULL,
[KuponBrojId] [smallint] NOT NULL,
[Broj] [smallint] NOT NULL,
[IzvucenBroj] AS ([dbo].[fn_DaliBrojIzvucen]([Broj],[KoloId])),
CONSTRAINT [PK_Kupon] PRIMARY KEY CLUSTERED
(
[KoloId] ASC,
[KuponId] ASC,
[KuponBrojId] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]


Computed kolona IzvucenBroj ima vrednost 1 ako je broj izvucen, 0 ako broj nije izvucen

IzvlacenjeBrojId su redni brojevi od 1 do 20
KuponBrojId su redni brojevi od 1 do 6

Potrebno je dosredjivanje u smislu ogranicenja da ne moze jedan broj dva puta da se izvuce (ili moze?), da su za dato kolo KuponBrojId do 6, ne moze vise (ili mozda sutra ce moci i do 10).........
[ Dusan Kondic @ 19.12.2011. 14:01 ] @
Dodatni upit na moj predlog koji daje broj pogođenih brojeva po svakom kuponu:
Code:

SELECT Kupon.VlasnikKupona, Kupon.OznakaKupona, COUNT(*) AS BrojPogodaka
FROM Kupon INNER JOIN KuponBroj ON Kupon.Kupon_Id = KuponBroj.Kupon_Id
INNER JOIN IzvlacenjeBroj ON IzvlacenjeBroj.Izvlacenje_Id = Kupon.Izvlacenje_Id AND KuponBroj.Broj = IzvlacenjeBroj.Broj
WHERE Kupon.Izvlacenje_Id = 1 AND Kupon.Kupon_Id = 1
GROUP BY Kupon.VlasnikKupona, Kupon.OznakaKupona
[ ne.rad @ 19.12.2011. 14:39 ] @
Oboje ste mi ponudili sjajna rešenja iz kojih mogu mnogo da naučim. Hvala vam puno. Sjajni ste.

Sada idem da se igram sa kuponima i izvlačenjima.