PDA

View Full Version : مشکل این کوئری چیه در ساخت دیتابیس



korosh00
شنبه 08 آذر 1393, 10:19 صبح
سلام
من یک نمونه دارم که بانک هم همراهشه نمیدونم چرابانک رو می خوام بسازم کوئری ارور میده ؟
ممنون
126134

korosh00
شنبه 08 آذر 1393, 19:09 عصر
لطفا . ممنون

uthman
شنبه 08 آذر 1393, 19:32 عصر
اطلاح شد . دانلود کن (http://hozhan.ir/statics/File/script-9c58ff.zip)

korosh00
شنبه 08 آذر 1393, 21:23 عصر
سلام
مشکل الان حل نشد .
فقط یک دیتابیس میسازه بنام test .
لطفا یکبار دیگه بررسی کنید . جداول رو نمیسازه!!!!!!!!!!

korosh00
شنبه 08 آذر 1393, 21:24 عصر
الان فکر کنم مشکل سر این خط هست
CREATE PROCEDURE [dbo].[SSP_GET_HIERARCHY] AS

uthman
شنبه 08 آذر 1393, 22:16 عصر
سلام . شما وقتی که می خواید یک کوئری رو اجرا کنید بایدابتدا دیتابیسی رو که قصد اعمال کوری بر روی آن رو دارید مشخص کنید مثل زیر :

use yourdbName;
go

دیتابیس باید موجود باشه اگه وجود نداره ابتدا دیتابیس رو بساز مثل زیر :

create database dbName;
go

کوئری شما رو اجرا کردم هیچ مشکلی وجود نداشت .

korosh00
یک شنبه 09 آذر 1393, 08:57 صبح
الان کوئری اجرا میشه ولی هیچ جدولی نمیسازه .
من خودم دیتابیس رو ساختم و این قسمت رو کوئری گذاشتم
CREATE PROCEDURE [dbo].[SSP_GET_HIERARCHY] AS
BEGIN


WITH ITERATE_NODES_RECURSIVE AS
(
SELECT NODE_DESCRIPTION, NODE_ID, UNDER_PARENT, 0 AS LEVEL_DEPTH
FROM dbo.TBL_TREE_HIERARCHY
WHERE (NODE_ID IN(SELECT NODE_ID FROM dbo.TBL_TREE_HIERARCHY
WHERE (UNDER_PARENT = 0)))
UNION ALL
SELECT Super.NODE_DESCRIPTION, Super.NODE_ID,Super.UNDER_PARENT,
Sub.LEVEL_DEPTH + 1 AS LEVEL_DEPTH
FROM dbo.TBL_TREE_HIERARCHY AS Super INNER JOIN ITERATE_NODES_RECURSIVE AS SUB ON
SUB.NODE_ID = SUPER.UNDER_PARENT
)


SELECT NODE_DESCRIPTION, NODE_ID, CONVERT(INT, UNDER_PARENT) AS UNDER_PARENT, LEVEL_DEPTH
FROM ITERATE_NODES_RECURSIVE
ORDER BY LEVEL_Depth


END


exec [SSP_GET_HIERARCHY]


insert into [TBL_TREE_HIERARCHY] values('Mathematics',0)
insert into [TBL_TREE_HIERARCHY] values('Algebra',1)
insert into [TBL_TREE_HIERARCHY] values('Geometry',1)
insert into [TBL_TREE_HIERARCHY] values('Triangle',3)
insert into [TBL_TREE_HIERARCHY] values('By Relative Length',4)
insert into [TBL_TREE_HIERARCHY] values('By Internal Angle',4)
insert into [TBL_TREE_HIERARCHY] values('Equilateral Triangle',5)
insert into [TBL_TREE_HIERARCHY] values('Scalene Triangle',5)
insert into [TBL_TREE_HIERARCHY] values('Isosceles Triangle',5)
insert into [TBL_TREE_HIERARCHY] values('Oblique > 90 Degree:Obtuse Angled Traingle',6)
insert into [TBL_TREE_HIERARCHY] values('Oblique < 90 Degree:Acute Angled Traingle',6)
insert into [TBL_TREE_HIERARCHY] values('Right Angled Triangle',6)
insert into [TBL_TREE_HIERARCHY] values('Elementary Algebra',2)
insert into [TBL_TREE_HIERARCHY] values('Abstract Algebra',2)
insert into [TBL_TREE_HIERARCHY] values('Linear Algebra',2)
insert into [TBL_TREE_HIERARCHY] values('All Sides are Equal',7)
CREATE TABLE [dbo].[TBL_TREE_HIERARCHY]
(
[NODE_ID] [INT] IDENTITY(1,1) NOT NULL,
[NODE_DESCRIPTION] [NVARCHAR](50) NOT NULL,
[UNDER_PARENT] [INT] NOT NULL
)

korosh00
یک شنبه 09 آذر 1393, 08:58 صبح
امکان داره ساختید برام دیتابیس رو بفرستید ؟
ممنون من که نتونستم .

uthman
یک شنبه 09 آذر 1393, 09:09 صبح
سلام. قرار نیست جدولی ساخته بشه ، کد اولی که نوشتی یک پروسیجر هست که به صورت خلاصه بخوام بگه مثل یک تابع می مونه شما هر وقت خواستید می تونید اونو فراخوانی کنید و اگه پارامتر هم لازم داشته باشه باید پارامتر هم بهش پاس بدی .پروسیجر فوق رو میتونی از آدرس زیر ببینی
programmability>Stored procedure

korosh00
یک شنبه 09 آذر 1393, 09:20 صبح
خوب الان این فایل اصلی که براتون فرستادم و شما اصلاحش کردید توش جدول داره





CREATE TABLE [dbo].[TBL_TREE_HIERARCHY]
(
[NODE_ID] [INT] IDENTITY(1,1) NOT NULL,
[NODE_DESCRIPTION] [NVARCHAR](50) NOT NULL,
[UNDER_PARENT] [INT] NOT NULL
)


CREATE PROCEDURE [dbo].[SSP_GET_HIERARCHY] AS
BEGIN


WITH ITERATE_NODES_RECURSIVE AS
(
SELECT NODE_DESCRIPTION, NODE_ID, UNDER_PARENT, 0 AS LEVEL_DEPTH
FROM dbo.TBL_TREE_HIERARCHY
WHERE (NODE_ID IN(SELECT NODE_ID FROM dbo.TBL_TREE_HIERARCHY
WHERE (UNDER_PARENT = 0)))
UNION ALL
SELECT Super.NODE_DESCRIPTION, Super.NODE_ID,Super.UNDER_PARENT,
Sub.LEVEL_DEPTH + 1 AS LEVEL_DEPTH
FROM dbo.TBL_TREE_HIERARCHY AS Super INNER JOIN ITERATE_NODES_RECURSIVE AS SUB ON
SUB.NODE_ID = SUPER.UNDER_PARENT
)


SELECT NODE_DESCRIPTION, NODE_ID, CONVERT(INT, UNDER_PARENT) AS UNDER_PARENT, LEVEL_DEPTH
FROM ITERATE_NODES_RECURSIVE
ORDER BY LEVEL_Depth


END


exec [SSP_GET_HIERARCHY]


insert into [TBL_TREE_HIERARCHY] values('Mathematics',0)
insert into [TBL_TREE_HIERARCHY] values('Algebra',1)
insert into [TBL_TREE_HIERARCHY] values('Geometry',1)
insert into [TBL_TREE_HIERARCHY] values('Triangle',3)
insert into [TBL_TREE_HIERARCHY] values('By Relative Length',4)
insert into [TBL_TREE_HIERARCHY] values('By Internal Angle',4)
insert into [TBL_TREE_HIERARCHY] values('Equilateral Triangle',5)
insert into [TBL_TREE_HIERARCHY] values('Scalene Triangle',5)
insert into [TBL_TREE_HIERARCHY] values('Isosceles Triangle',5)
insert into [TBL_TREE_HIERARCHY] values('Oblique > 90 Degree:Obtuse Angled Traingle',6)
insert into [TBL_TREE_HIERARCHY] values('Oblique < 90 Degree:Acute Angled Traingle',6)
insert into [TBL_TREE_HIERARCHY] values('Right Angled Triangle',6)
insert into [TBL_TREE_HIERARCHY] values('Elementary Algebra',2)
insert into [TBL_TREE_HIERARCHY] values('Abstract Algebra',2)
insert into [TBL_TREE_HIERARCHY] values('Linear Algebra',2)
insert into [TBL_TREE_HIERARCHY] values('All Sides are Equal',7)

korosh00
یک شنبه 09 آذر 1393, 09:22 صبح
این بالایی فایل اصلی بود که توش نوشته ساخت جدول و یک سری هم مقدار داره که باید در جدول باشه .
من اینو اجرا می کردم ارور می داد دادم شا مشکلش روبگید .
حالا شما اون اصلی رو اجرا کنید ببینید چجوره و مشکلش چیه ؟
ممنون

uthman
یک شنبه 09 آذر 1393, 09:33 صبح
فقط کافیه یه go(خط 7 دستور زیر) بعد از دستور ساخت جدول قرار بدی مثل زیر البته باید دیتابیس رو با استفاده از use انتخاب کرده باشی .من این رو روی یه دیتابیس تست انجام دادم:

CREATE TABLE [dbo].[TBL_TREE_HIERARCHY]
(
[NODE_ID] [INT] IDENTITY(1,1) NOT NULL,
[NODE_DESCRIPTION] [NVARCHAR](50) NOT NULL,
[UNDER_PARENT] [INT] NOT NULL
)
go


CREATE PROCEDURE [dbo].[SSP_GET_HIERARCHY] AS
BEGIN




WITH ITERATE_NODES_RECURSIVE AS
(
SELECT NODE_DESCRIPTION, NODE_ID, UNDER_PARENT, 0 AS LEVEL_DEPTH
FROM dbo.TBL_TREE_HIERARCHY
WHERE (NODE_ID IN(SELECT NODE_ID FROM dbo.TBL_TREE_HIERARCHY
WHERE (UNDER_PARENT = 0)))
UNION ALL
SELECT Super.NODE_DESCRIPTION, Super.NODE_ID,Super.UNDER_PARENT,
Sub.LEVEL_DEPTH + 1 AS LEVEL_DEPTH
FROM dbo.TBL_TREE_HIERARCHY AS Super INNER JOIN ITERATE_NODES_RECURSIVE AS SUB ON
SUB.NODE_ID = SUPER.UNDER_PARENT
)




SELECT NODE_DESCRIPTION, NODE_ID, CONVERT(INT, UNDER_PARENT) AS UNDER_PARENT, LEVEL_DEPTH
FROM ITERATE_NODES_RECURSIVE
ORDER BY LEVEL_Depth




END




exec [SSP_GET_HIERARCHY]




insert into [TBL_TREE_HIERARCHY] values('Mathematics',0)
insert into [TBL_TREE_HIERARCHY] values('Algebra',1)
insert into [TBL_TREE_HIERARCHY] values('Geometry',1)
insert into [TBL_TREE_HIERARCHY] values('Triangle',3)
insert into [TBL_TREE_HIERARCHY] values('By Relative Length',4)
insert into [TBL_TREE_HIERARCHY] values('By Internal Angle',4)
insert into [TBL_TREE_HIERARCHY] values('Equilateral Triangle',5)
insert into [TBL_TREE_HIERARCHY] values('Scalene Triangle',5)
insert into [TBL_TREE_HIERARCHY] values('Isosceles Triangle',5)
insert into [TBL_TREE_HIERARCHY] values('Oblique > 90 Degree:Obtuse Angled Traingle',6)
insert into [TBL_TREE_HIERARCHY] values('Oblique < 90 Degree:Acute Angled Traingle',6)
insert into [TBL_TREE_HIERARCHY] values('Right Angled Triangle',6)
insert into [TBL_TREE_HIERARCHY] values('Elementary Algebra',2)
insert into [TBL_TREE_HIERARCHY] values('Abstract Algebra',2)
insert into [TBL_TREE_HIERARCHY] values('Linear Algebra',2)
insert into [TBL_TREE_HIERARCHY] values('All Sides are Equal',7)

korosh00
یک شنبه 09 آذر 1393, 09:52 صبح
خوب این باز اطلاعات رو نمیریزه تو جدول من خودم جداگانه اون قسمت insert رو ریختم .
الان نهایتا باید جدول این شکلی در بیاد .
البته ابن رو خود نمونه گذاشته من نمیدونم همین باشه یا نه

126156

الان شما کوئری رو اجرا میکنی این هست ؟

البته همون دیتابیس که درست شده کار میکنه درست و نتیجه رو داد ولی نمیدونم چرا شبیه این شکل نیست جدول

ولی بازتشکر می کنم که مشکل حل شد .
ممنون