ورود

View Full Version : راهنمایی برای احزای دستور Join



kia9372
یک شنبه 11 بهمن 1394, 21:36 عصر
وقتی Join رو نوشتم و اجرا کردم ی مشکلی پیش اومد .

وقتی کاربر ثبت سفارش میکنه ، یه شهر رو که انتخاب میکنه همه مناطق مربوط یه اون شهر براش ثبت میشه .

ینی اگر واسه اون شهر 10 منطقه ثبت شده باشه هر 10 منطقه رو واسه کاربر نشون میده .

تو عکس نشون دادم .


138766




CREATE TABLE Orders
(
OrderID INT IDENTITY (1,1) NOT NULL PRIMARY KEY,
Fname VARCHAR(50) NOT NULL,
Lname VARCHAR(50) NOT NULL,
Tel VARCHAR(15),
Counts INT NOT NULL,
DaysID INT NOT NULL,
CityID INT NOT NULL,
AreaID INT NOT NULL,
Address VARCHAR(1024) NOT NULL,
FOREIGN KEY (DaysID) REFERENCES WeekDays(DaysID),
FOREIGN KEY (CityID) REFERENCES City(CityID),
FOREIGN KEY (AreaID) REFERENCES Area(AreaID)
)
GO
CREATE TABLE WeekDays
(
DaysID INT IDENTITY (1,1) NOT NULL PRIMARY KEY,
DaysName VARCHAR(50) NOT NULL,
)
GO
CREATE TABLE City
(
CityID INT IDENTITY (1,1) NOT NULL PRIMARY KEY,
CityName VARCHAR(100) NOT NULL,
)
CREATE TABLE Area
(
AreaID INT IDENTITY (1,1) PRIMARY KEY,
AreaName VARCHAR(100) NOT NULL,
CityID INT ,
FOREIGN KEY (CityID) REFERENCES City(CityID)
)

ham3d1988
دوشنبه 12 بهمن 1394, 00:00 صبح
سلام توی join با جدول order فیلد AreaId رو هم توی شرط join اضافه کنید.و البته بهتر بود فیلد cityId توی جدول order نباشه چون از طریق جدول Area بهش میرسیدید.

kia9372
دوشنبه 12 بهمن 1394, 02:36 صبح
سلام توی join با جدول order فیلد AreaId رو هم توی شرط join اضافه کنید.و البته بهتر بود فیلد cityId توی جدول order نباشه چون از طریق جدول Area بهش میرسیدید.

اگه کدشو برام بنویسید یه دنیا ممنون میشم چون من تازه کارم و اینطوری نمیتونم مطلبو درک کنم .

ham3d1988
دوشنبه 12 بهمن 1394, 09:56 صبح
سلام


SELECT * FROM Orders to1 WITH (NOLOCK)
JOIN City tc WITH (NOLOCK) ON tc.CityID = to1.CityID
JOIN Area ta WITH (NOLOCK) ON ta.AreaID = to1.AreaID AND ta.CityID = tc.CityID
JOIN WeekDays twd WITH (NOLOCK) ON twd.DaysID = to1.DaysID

kia9372
دوشنبه 12 بهمن 1394, 11:14 صبح
حل نشد ک .

این سورس Join منه . http://s7.picofile.com/file/8236431342/join.txt.html

kia9372
دوشنبه 12 بهمن 1394, 11:21 صبح
ELECT dbo.Orders.Fname, dbo.Orders.Lname, dbo.Orders.Tel, dbo.Orders.Counts, dbo.WeekDays.DaysName, dbo.City.CityName, dbo.Area.AreaName, dbo.Orders.Address
FROM dbo.Area INNER JOIN
dbo.City ON dbo.Area.CityID = dbo.City.CityID INNER JOIN
dbo.Orders ON dbo.Area.AreaID = dbo.Orders.AreaID AND dbo.City.CityID = dbo.Orders.CityID INNER JOIN
dbo.WeekDays ON dbo.Orders.DaysID = dbo.WeekDays.DaysID

ham3d1988
دوشنبه 12 بهمن 1394, 12:42 عصر
ELECT dbo.Orders.Fname, dbo.Orders.Lname, dbo.Orders.Tel, dbo.Orders.Counts, dbo.WeekDays.DaysName, dbo.City.CityName, dbo.Area.AreaName, dbo.Orders.Address
FROM dbo.Area INNER JOIN
dbo.City ON dbo.Area.CityID = dbo.City.CityID INNER JOIN
dbo.Orders ON dbo.Area.AreaID = dbo.Orders.AreaID AND dbo.City.CityID = dbo.Orders.CityID INNER JOIN
dbo.WeekDays ON dbo.Orders.DaysID = dbo.WeekDays.DaysID




این کوئری و کوئری ی که من گذاشتم باید طبق ساختار شما جواب بده میشه از نتیجه اجرا دو کوئری عکس بگیرید بزارید ببینم

kia9372
دوشنبه 12 بهمن 1394, 12:46 عصر
این کوئری و کوئری ی که من گذاشتم باید طبق ساختار شما جواب بده میشه از نتیجه اجرا دو کوئری عکس بگیرید بزارید ببینم

من اصن نمیدونم چطور باید کوئری شما رو تو کوئری خودم اجرا کنم . میشه کوئری ک نوشته بودید رو طبق کوئری من بنویسید ؟


138771

kia9372
سه شنبه 13 بهمن 1394, 12:25 عصر
دوستان لطفا راهنمایی بفرمایید

ham3d1988
جمعه 16 بهمن 1394, 23:39 عصر
سلام مجددفک میکنم کوئری درسته لطفا داده های ذخیره شده توی دیتابیس رو بررسی فرمایید

parsdarab
جمعه 07 اسفند 1394, 12:01 عصر
سلام

جای جدول ها رو عوض کنید توی جوین زدن

مثلا اول جدول orders رو بنویس و بعد شرط
بعد جدول WeekDays و بعد جدول City و بعد Area