PDA

View Full Version : سوال در مورد join سه جدول و مشکلی که بوجود آمد



نیما حتمی
پنج شنبه 07 آذر 1392, 09:14 صبح
با سلام

دوستان من بین 3 جدولم join بستم حالا این join من اومده تعداد سطرای malirecieve*cardtocard کرده میاره نشون میده و این کار باعث شده کلی سطر تکراری من داشته یاشم تو گزارشم

این دستورم:

SqlConnection connect = new SqlConnection();
connect.ConnectionString = Ajans.Properties.Settings.Default.Connection.ToStr ing();
string conditions = "1=1";
if (checkBox1.Checked == true)
{
conditions += "and MP.namebank='" + NameBank.Text + "' ";
}
else
{
checkBox1.Checked = false;
}
if (checkBox4.Checked == true)
{
conditions += "and SP.dateharekat='" + DateHarekat.Value.FarsiSelectedDate + "' ";
}
else
{
checkBox4.Checked = false;
}
if (checkBox5.Checked == true)
{
conditions += "and MR.Nametor='" + nametor.Text + "' ";
}
else
{
checkBox5.Checked = false;
}
if (checkBox2.Checked == true)
{
conditions += "and MR.DateRecieve between '" + From.Value.FarsiSelectedDate + "' and '" + To.Value.FarsiSelectedDate + "' ";
}
else
{
checkBox2.Checked = false;
}
//-------------------پرداختی ها
string conditions1 = "1=1";
if (checkBox1.Checked == true)
{
conditions1 += "and CardToCardPeyment.NameBank='" + NameBank.Text + "' ";
}
else
{
checkBox1.Checked = false;
}
if (checkBox4.Checked == true)
{
conditions1 += "and customer.dateharekat='" + DateHarekat.Value.FarsiSelectedDate + "' ";
}
else
{
checkBox4.Checked = false;
}
if (checkBox5.Checked == true)
{
conditions1 += "and MaliPeyment.Nametor='" + nametor.Text + "'";
}
else
{
checkBox5.Checked = false;
}
if (checkBox2.Checked == true)
{
conditions1 += "and MaliPeyment.DateRecieve between'" + From.Value.FarsiSelectedDate + "' and '" + To.Value.FarsiSelectedDate + "'";
}
else
{
checkBox2.Checked = false;
}
if (Type.SelectedIndex == 0)
{
DG.Visible = true;
pardakht.Visible = false;
try
{
connect.Open();
// SqlDataAdapter saeed = new SqlDataAdapter(@"select MaliRecieve.shgh as [ش قرارداد],MaliRecieve.FamilyM as [نام مسافر],MaliRecieve.Nametor as [نام تور],customer.dateharekat as [تاریخ حرکت],customer.Count as تعداد,CardtoCard.Malirecieve as مبلغ ,MaliRecieve.TypeRecieve as [نوع دریافت], CardtoCard.ShPeygiri as [ش پیگیری],MaliRecieve.tarafhesab as [طرف حساب] From MaliRecieve inner join customer on malirecieve.shgh=customer.shgh inner join cardtocard on cardtocard.shgh=malirecieve.shgh where Customer.typePassenger='true' And " + conditions, connect);
SqlDataAdapter saeed = new SqlDataAdapter(@"select MR.ShGh AS شرح
,MR.FamilyM AS [نام مسافر]
,SP.dateharekat AS [تاریخ حرکت]
,MR.DateRecieve as [تاریخ دریافت]
,SP.count AS تعداد
,MP.Malirecieve AS مبلغ
,MR.TypeRecieve AS [نوع دریافتی]
,MP.ShPeygiri AS [ش پیگیری]
,MR.Nametor AS [نام تور]
,MR.tarafhesab AS [طرف حساب]

From
malirecieve MR Full Outer Join cardtocard MP
ON
MR.ShGh = MP.ShGh Full Outer Join customer SP ON MR.Shgh=SP.Shgh where SP.typePassenger='true' And " + conditions, connect);
DataTable t = new DataTable(); saeed.Fill(t);
DG.DataSource = t;
DG.RetrieveStructure();
DG.RootTable.Columns[5].FormatString = "#,#";
}
catch (Exception x)
{
MessageBox.Show(x.Message.ToString());
}
finally
{
connect.Close();
}
}
else
{
if (Type.SelectedIndex == 1)
{
DG.Visible = false;
pardakht.Visible = true;
try
{
connect.Open();
SqlDataAdapter insert = new SqlDataAdapter(@"select MaliPeyment.shgh as [ش قرارداد],MaliPeyment.FamilyM as [نام مسافر],MaliPeyment.Nametor as [نام تور],customer.dateharekat as [تاریخ حرکت],customer.Count as تعداد,CardToCardPeyment.Malirecieve as مبلغ ,MaliPeyment.TypeRecieve as [نوع پرداخت],CardToCardPeyment.ShPeygiri as [ش پیگیری] From MaliPeyment Full Outer Join CardToCardPeyment on MaliPeyment.shgh=CardToCardPeyment.shgh Full Outer Join customer on MaliPeyment.shgh=customer.shgh where Customer.typePassenger='true' And " + conditions1, connect);
DataTable t = new DataTable(); insert.Fill(t);
pardakht.DataSource = t;
pardakht.RetrieveStructure();
pardakht.RootTable.Columns[5].FormatString = "#,#";
}
catch (Exception x)
{
MessageBox.Show(x.Message.ToString());
}
finally
{
connect.Close();
}
}
else
{
}
}


دوستان من بدجوری نیاز دارم به حل این مشکل.
دستور سلکت من طوری هست که میار از شروط ترکیبی استفاده میکنه اگه تو دستورم دقت کنین متوجه میشین به خاطر همین هم نمی تونم از group by استفاده کنم چرا که دستور سلکت من با +condition تموم میشه

لطفا کمکم کنین

aslan
پنج شنبه 07 آذر 1392, 10:17 صبح
سلام
بجای FULL OUTER JOIN
از
INNER JOIN
و یا نسبت به مورد
از LEFT OUTER JOIN
استفاده کنید
موفق باشید

نیما حتمی
پنج شنبه 07 آذر 1392, 10:35 صبح
دوست خوب این کارارو کردم جواب نمیده

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

نیما حتمی
پنج شنبه 07 آذر 1392, 10:44 صبح
دوستان چطور این دستورو بنویسم که نیاد تعداد رکوردهای جدول A*B کنه و در خروجی نشوم بده

aslan
پنج شنبه 07 آذر 1392, 11:22 صبح
دوست خوب این کارارو کردم جواب نمیده

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

سلام
اولا که شما براحتی میتونید دستور مربوط به Group By را نیز با Condition ... ترکیب کنید و به نتیجه مطلوب برسید
ثانیا به احتمال زیاد مشکلتون از نوع JOIN مورد استفاده است ( تا اونجایی که میدونم نتیجه FULL OUTER JOIN حاصلضرب دکارتی دو جدول را میده . دقیقا همون چیزی که شما بدست میارین ... )
در صورتیکه هنوز مشکلتون حل نشده تصویر فیلدهای جداولتون همراه با نمونه دیتا و نتیجه ای که از سلکت انتظار دارین را اینجا قرار بدین

نیما حتمی
پنج شنبه 07 آذر 1392, 11:42 صبح
دوست عزیز اررور میده وقتی از group by استفاده میکنم من از group by اینطوری استفاده میکنم:


SqlDataAdapter saeed = new SqlDataAdapter(@"select MR.ShGh AS شرح
,MR.FamilyM AS [نام مسافر]
,SP.dateharekat AS [تاریخ حرکت]
,MR.DateRecieve as [تاریخ دریافت]
,SP.count AS تعداد
,MP.Malirecieve AS مبلغ
,MR.TypeRecieve AS [نوع دریافتی]
,MP.ShPeygiri AS [ش پیگیری]
,MR.Nametor AS [نام تور]
,MR.tarafhesab AS [طرف حساب]

From
malirecieve MR Full Outer Join cardtocard MP
ON
MR.ShGh = MP.ShGh Full Outer Join customer SP ON MR.Shgh=SP.Shgh where SP.typePassenger='true' And " + conditions+"group by MP.shgh", connect);

نیما حتمی
پنج شنبه 07 آذر 1392, 11:55 صبح
اینم ارور
113296

aslan
پنج شنبه 07 آذر 1392, 11:59 صبح
دوست عزیز اررور میده وقتی از group by استفاده میکنم من از group by اینطوری استفاده میکنم:


SqlDataAdapter saeed = new SqlDataAdapter(@"select MR.ShGh AS شرح
,MR.FamilyM AS [نام مسافر]
,SP.dateharekat AS [تاریخ حرکت]
,MR.DateRecieve as [تاریخ دریافت]
,SP.count AS تعداد
,MP.Malirecieve AS مبلغ
,MR.TypeRecieve AS [نوع دریافتی]
,MP.ShPeygiri AS [ش پیگیری]
,MR.Nametor AS [نام تور]
,MR.tarafhesab AS [طرف حساب]

From
malirecieve MR Full Outer Join cardtocard MP
ON
MR.ShGh = MP.ShGh Full Outer Join customer SP ON MR.Shgh=SP.Shgh where SP.typePassenger='true' And " + conditions+"group by MP.shgh", connect);

خب به این شکل استفاده از Group By اشتباهه
شما در دستور سلکت ده فیلد و سلکت کردین و میخواین بر اساس یک فیلد گروهبندی کنید و اونهم فیلدی که اصلا سلکت نکردین
به هر حال برای اینکه زودتر به نتیجه برسین فعلا گروهبندی را بزارین کنار و چیزی را که ازتون خواستم ( تصویر فیلدها و ..... ) اینجا قرار بدین . البته اگر براتون مقدوره .......
موفق باشین

aslan
پنج شنبه 07 آذر 1392, 12:08 عصر
113298

http://www.w3schools.com/sql/sql_groupby.asp

نیما حتمی
پنج شنبه 07 آذر 1392, 12:19 عصر
دوست گلم من حتی وقتی میام فیلدی رو که حتی تو سلکتم استفاده شده است رو میزارم توgroup by باز هم ارور میده

در کل خواسته من نمایش فیلدهایی که تو سلکتم آوردم در غالب یه گزارش هست
البته تصویر فیلدها ضرورتی نداره چون نوع فیلدها و...... همگی رعایت شده چیزی که واقعا نمی فهمم اینه که چرا اررور میده و چرا میاد تعداد رکوردهای malirecieve*تعداد رکوردهای cardtocard میکنه و تو گزارش نشون میده

aslan
پنج شنبه 07 آذر 1392, 12:48 عصر
دوست گلم من حتی وقتی میام فیلدی رو که حتی تو سلکتم استفاده شده است رو میزارم توgroup by باز هم ارور میده

در کل خواسته من نمایش فیلدهایی که تو سلکتم آوردم در غالب یه گزارش هست
البته تصویر فیلدها ضرورتی نداره چون نوع فیلدها و...... همگی رعایت شده چیزی که واقعا نمی فهمم اینه که چرا اررور میده و چرا میاد تعداد رکوردهای malirecieve*تعداد رکوردهای cardtocard میکنه و تو گزارش نشون میده

OK
موفق باشید
لینک زیر را هم ببینید بد نیست
http://www.codeproject.com/Articles/571933/Joining-Tables-in-SQL

نیما حتمی
پنج شنبه 07 آذر 1392, 13:06 عصر
مرسی اصلان جان

خیلی کمک کردی ولی من به نتیجه نرسیدم هنوز

نیما حتمی
پنج شنبه 07 آذر 1392, 17:57 عصر
اساتید کسی نیست کمک کنه این مشکل من حل بشه

Mahmoud.Afrad
پنج شنبه 07 آذر 1392, 18:58 عصر
حداقل اسکریپت جداول رو همراه با کوئری join بزارید تا بشه تست کرد.

نیما حتمی
پنج شنبه 07 آذر 1392, 19:02 عصر
USE [Ajans]
GO
/****** Object: Table [dbo].[users] Script Date: 11/28/2013 19:44:26 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[users](
[Id] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](50) NULL,
[Family] [nvarchar](50) NULL,
[Pass] [nvarchar](50) NULL,
[username] [nvarchar](50) NULL,
[tarifetor] [bit] NULL,
[users] [bit] NULL,
[AccessUsers] [bit] NULL,
[recieption] [bit] NULL,
[gozaeshat] [bit] NULL,
[finance] [bit] NULL,
[gozaeshatchek] [bit] NULL,
[EditGozaresh] [bit] NULL,
[SystemSetting] [bit] NULL,
[BaseTbl] [bit] NULL,
[BlakList] [bit] NULL,
[Alarm] [bit] NULL,
[DialyGozaresh] [bit] NULL,
[Kartabl] [bit] NULL,
[FinanceMali] [bit] NULL,
CONSTRAINT [PK_users] 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]
GO
/****** Object: Table [dbo].[Typevasile] Script Date: 11/28/2013 19:44:26 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Typevasile](
[ID] [int] IDENTITY(1,1) NOT NULL,
[NameVasileRaft] [nvarchar](50) NULL,
[Namevasilebargasht] [nvarchar](50) NULL
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[TaeidTbl] Script Date: 11/28/2013 19:44:26 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[TaeidTbl](
[ID] [int] IDENTITY(1,1) NOT NULL,
[shgh] [nvarchar](50) NULL,
[accountkol] [int] NULL,
[MonyHotel] [int] NULL,
[MonyP] [int] NULL,
[KolP] [int] NULL,
[Sod] [int] NULL,
[Managment] [bit] NULL,
[modirefanni] [bit] NULL,
[Comm] [nvarchar](500) NULL,
[MonyGasht] [int] NULL,
[MonyComisiun] [int] NULL,
[DateHotel] [nvarchar](50) NULL,
[DateParvaz] [nvarchar](50) NULL,
[DateGasht] [nvarchar](50) NULL,
CONSTRAINT [PK_TaeidTbl] 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]
GO
/****** Object: Table [dbo].[Setting] Script Date: 11/28/2013 19:44:26 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Setting](
[NameCompany] [nvarchar](50) NULL,
[TelN] [nvarchar](50) NULL,
[FaxN] [nvarchar](50) NULL,
[Logo] [image] NULL,
[Address] [nvarchar](200) NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
/****** Object: Table [dbo].[salemali] Script Date: 11/28/2013 19:44:26 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[salemali](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](50) NULL,
[DateStart] [nvarchar](50) NULL,
[DateEnd] [nvarchar](50) NULL,
[MaliYear] [nvarchar](50) NULL,
[shsef] [nvarchar](50) NULL,
[shsekh] [nvarchar](50) NULL,
[status] [nvarchar](50) NULL,
CONSTRAINT [PK_salemali] 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]
GO
/****** Object: Table [dbo].[Rojo] Script Date: 11/28/2013 19:44:26 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Rojo](
[ID] [int] IDENTITY(1,1) NOT NULL,
[DateSabtenam] [nvarchar](50) NULL,
[Name] [nvarchar](50) NULL,
CONSTRAINT [PK_Rojo] 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]
GO
/****** Object: Table [dbo].[ReciveKoli] Script Date: 11/28/2013 19:44:26 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[ReciveKoli](
[ID] [int] IDENTITY(1,1) NOT NULL,
[DateSabt] [nvarchar](50) NULL,
[DateRecive] [nvarchar](50) NULL,
[TarafhesabName] [nvarchar](50) NULL,
[Namayandeh] [nvarchar](50) NULL,
[NameBank] [nvarchar](50) NULL,
[ShH] [nvarchar](50) NULL,
[mony] [int] NULL,
[Shp] [nvarchar](50) NULL,
[babate] [nvarchar](50) NULL,
[Comm] [nvarchar](50) NULL,
[Type] [nvarchar](50) NULL,
CONSTRAINT [PK_ReciveKoli] 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]
GO
/****** Object: Table [dbo].[MaliRecieve] Script Date: 11/28/2013 19:44:26 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[MaliRecieve](
[ID] [int] NULL,
[Shsanad] [nvarchar](50) NULL,
[Shgh] [nvarchar](50) NULL,
[NameM] [nvarchar](50) NULL,
[FamilyM] [nvarchar](50) NULL,
[Nametor] [nvarchar](50) NULL,
[DateSabt] [nvarchar](50) NULL,
[DateRecieve] [nvarchar](50) NULL,
[TypeRecieve] [nvarchar](50) NULL,
[MonyRecieve] [int] NULL,
[mablaghekol] [int] NULL,
[Comm] [nvarchar](500) NULL,
[NameUser] [nvarchar](50) NULL,
[tarafhesab] [nvarchar](50) NULL
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[MaliPeyment] Script Date: 11/28/2013 19:44:26 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[MaliPeyment](
[ID] [int] NOT NULL,
[Shsanad] [nvarchar](50) NULL,
[Shgh] [nvarchar](50) NULL,
[NameM] [nvarchar](50) NULL,
[FamilyM] [nvarchar](50) NULL,
[Nametor] [nvarchar](50) NULL,
[DateSabt] [nvarchar](50) NULL,
[DateRecieve] [nvarchar](50) NULL,
[TypeRecieve] [nvarchar](50) NULL,
[MonyPeyment] [int] NULL,
[mablaghekol] [int] NULL,
[TarafhesabName] [nvarchar](50) NULL,
[Namayandename] [nvarchar](50) NULL,
[Comm] [nvarchar](500) NULL,
[NameUser] [nvarchar](50) NULL
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[Leider] Script Date: 11/28/2013 19:44:26 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Leider](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Datesabt] [nvarchar](50) NULL,
[Name] [nvarchar](50) NULL,
[Family] [nvarchar](50) NULL,
[Sex] [nvarchar](50) NULL,
[tahsilat] [nvarchar](50) NULL,
CONSTRAINT [PK_Leider] 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]
GO
/****** Object: Table [dbo].[Kolipeyment] Script Date: 11/28/2013 19:44:26 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Kolipeyment](
[ID] [int] IDENTITY(1,1) NOT NULL,
[DateSabt] [nvarchar](50) NULL,
[Typetor] [nvarchar](50) NULL,
[Nametor] [nvarchar](50) NULL,
[DateHarekat] [nvarchar](50) NULL,
[TarafhesabName] [nvarchar](50) NULL,
[Namayandeh] [nvarchar](50) NULL,
[NameBank] [nvarchar](50) NULL,
[ShH] [nvarchar](50) NULL,
[Mony] [int] NULL,
[babate] [nvarchar](50) NULL,
[Comm] [nvarchar](500) NULL,
[Shp] [nvarchar](50) NULL,
[Type] [nvarchar](50) NULL,
[UserName] [nvarchar](50) NULL,
CONSTRAINT [PK_KoliPeymaebt] 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]
GO
/****** Object: Table [dbo].[HotelTbl] Script Date: 11/28/2013 19:44:26 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[HotelTbl](
[ID] [int] NOT NULL,
[Shgh] [nvarchar](50) NULL,
[NameTarafHesab] [nvarchar](50) NULL,
[NAmeNamyande] [nvarchar](50) NULL,
[MonyHotel] [int] NULL,
[NameHotel] [nvarchar](50) NULL,
[NameCity] [nvarchar](50) NULL,
[StartHotel] [nvarchar](50) NULL,
[Chekin] [nvarchar](50) NULL,
[ChekOut] [nvarchar](50) NULL,
[Night] [nvarchar](50) NULL,
[Ext] [nvarchar](50) NULL,
[Sgl] [nvarchar](50) NULL,
[Dbl] [nvarchar](50) NULL,
[Trp] [nvarchar](50) NULL,
[fourbed] [nvarchar](50) NULL,
[fivebed] [nvarchar](50) NULL,
[sexbed] [nvarchar](50) NULL,
[Comm] [nvarchar](500) NULL,
[Managment] [bit] NULL,
[modirefanni] [bit] NULL
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[hotell] Script Date: 11/28/2013 19:44:26 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[hotell](
[Id] [int] IDENTITY(1,1) NOT NULL,
[NameTor] [nvarchar](50) NULL,
[NameHotel] [nvarchar](50) NULL,
[Date] [nvarchar](50) NULL,
[twootagh] [int] NULL,
[treeotagh] [int] NULL,
[fourotagh] [int] NULL,
[fiveotagh] [int] NULL,
[sexotagh] [int] NULL,
[countotaghkol] [int] NULL,
[countzarfiat] [int] NULL,
[dateinter] [nvarchar](50) NULL,
[dateout] [nvarchar](50) NULL,
[DateHarekat] [nvarchar](50) NULL,
[csandalibus] [int] NULL,
[Nameairline1] [nvarchar](50) NULL,
[cNameairline1] [int] NULL,
[Nameairline2] [nvarchar](50) NULL,
[cNameairline2] [int] NULL,
[ModatEghamat] [char](10) NULL,
[oneotagh] [int] NULL,
[MonyComisiun] [int] NULL,
CONSTRAINT [PK_hotell] 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]
GO
SET ANSI_PADDING OFF
GO
/****** Object: Table [dbo].[Hazine] Script Date: 11/28/2013 19:44:26 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Hazine](
[ID] [int] IDENTITY(1,1) NOT NULL,
[DateSabt] [nvarchar](50) NULL,
[NameHazine] [nvarchar](50) NULL,
CONSTRAINT [PK_Hazine] 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]
GO
/****** Object: Table [dbo].[gashtTbl] Script Date: 11/28/2013 19:44:26 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[gashtTbl](
[ID] [int] IDENTITY(1,1) NOT NULL,
[shgh] [nvarchar](50) NULL,
[MonyGasht] [int] NULL,
[MonyFod] [int] NULL,
[MonyMotefareghe] [int] NULL,
[NameTG] [nvarchar](50) NULL,
[NameTF] [nvarchar](50) NULL,
[NameTM] [nvarchar](50) NULL,
[Comm] [nvarchar](500) NULL,
CONSTRAINT [PK_gashtTbl] 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]
GO
/****** Object: Table [dbo].[GardeshBank] Script Date: 11/28/2013 19:44:26 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[GardeshBank](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Comm] [nvarchar](50) NULL,
[Date] [nvarchar](50) NULL,
[Bedehkari] [nvarchar](100) NULL,
[Bestankari] [nchar](10) NULL,
[NameUser] [nvarchar](50) NULL,
CONSTRAINT [PK_GardeshBank] 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]
GO
/****** Object: Table [dbo].[Customer] Script Date: 11/28/2013 19:44:26 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Customer](
[Id] [int] IDENTITY(1,1) NOT NULL,
[ShGH] [nvarchar](50) NULL,
[NameC] [nvarchar](50) NULL,
[Familyc] [nvarchar](50) NULL,
[ShMobile] [nvarchar](50) NULL,
[dateintertohetel] [nvarchar](50) NULL,
[Typevasileraft] [nvarchar](50) NULL,
[Typevasilebargasht] [nvarchar](50) NULL,
[Datesabtenam] [nvarchar](50) NULL,
[count] [int] NULL,
[radeseni] [nvarchar](50) NULL,
[request] [nvarchar](50) NULL,
[Nameuser] [nvarchar](50) NULL,
[madarek] [nvarchar](50) NULL,
[Comm] [nvarchar](200) NULL,
[NameHotel] [nvarchar](50) NULL,
[Nametor] [nvarchar](50) NULL,
[rezerv] [nvarchar](50) NULL,
[Towotagh] [int] NULL,
[treeotagh] [int] NULL,
[fourotagh] [int] NULL,
[fiveotagh] [int] NULL,
[sexotagh] [int] NULL,
[accountkol] [int] NULL,
[sersingletransfer] [bit] NULL,
[serdtransfer] [bit] NULL,
[sersobhane] [bit] NULL,
[sernahar] [bit] NULL,
[sersham] [bit] NULL,
[S2] [nvarchar](50) NULL,
[s3] [nvarchar](50) NULL,
[s4] [nvarchar](50) NULL,
[s5] [nvarchar](50) NULL,
[s6] [nvarchar](50) NULL,
[typegh] [nvarchar](50) NULL,
[vagozar] [nvarchar](50) NULL,
[csandalibus] [int] NULL,
[traft] [bit] NULL,
[tbargasht] [bit] NULL,
[vocher] [bit] NULL,
[motamam] [bit] NULL,
[chnames] [bit] NULL,
[chload] [bit] NULL,
[chseni] [bit] NULL,
[chmaharem] [bit] NULL,
[chcon] [bit] NULL,
[pishpardakht] [bit] NULL,
[tasveye] [bit] NULL,
[tahvilm] [bit] NULL,
[ModateE] [nvarchar](50) NULL,
[TypeTor] [nvarchar](50) NULL,
[DateBack] [nvarchar](50) NULL,
[typePassenger] [bit] NULL,
[Documentmali] [bit] NULL,
[CodeMelli] [nvarchar](10) NULL,
[Htb] [int] NULL,
[P1] [int] NULL,
[P2] [int] NULL,
[P3] [int] NULL,
[Bestankar] [int] NULL,
[bedehkar] [int] NULL,
[Typerojo] [nvarchar](50) NULL,
[Telsabet] [nvarchar](50) NULL,
[Pasport] [nvarchar](50) NULL,
[Address] [nvarchar](1000) NULL,
[serhotel] [bit] NULL,
[sersimkart] [bit] NULL,
[sergashtnimroz] [bit] NULL,
[sergashttamamroz] [bit] NULL,
[serblit] [bit] NULL,
[serbime] [bit] NULL,
[commagriment] [nvarchar](50) NULL,
[sex] [nvarchar](50) NULL,
[Discount] [nvarchar](50) NULL,
[DateHarekat] [nvarchar](50) NULL,
[oneotagh] [int] NULL,
[vagozarmony] [int] NULL,
[CancelShgh] [bit] NULL,
CONSTRAINT [PK_Customer] 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]
GO
/****** Object: Table [dbo].[ComisiunTbl] Script Date: 11/28/2013 19:44:26 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[ComisiunTbl](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Shgh] [nvarchar](50) NULL,
[NameTor] [nvarchar](50) NULL,
[DateInter] [nvarchar](50) NULL,
[DateLeave] [nvarchar](50) NULL,
[ModateEghamat] [nvarchar](50) NULL,
[NameUser] [nvarchar](50) NULL,
[MonyComisiun] [int] NULL,
[Typetor] [nvarchar](50) NULL,
[Count] [nvarchar](50) NULL,
[DateSabt] [nvarchar](50) NULL,
[SumComisiun] [int] NULL,
[CancelShgh] [bit] NULL,
CONSTRAINT [PK_ComisiunTbl] 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]
GO
/****** Object: Table [dbo].[ChekTblPeyment] Script Date: 11/28/2013 19:44:26 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[ChekTblPeyment](
[ID] [int] NOT NULL,
[Shgh] [nvarchar](50) NULL,
[NameBankChek] [nvarchar](50) NULL,
[ShHChek] [nvarchar](50) NULL,
[ShChek] [nvarchar](50) NULL,
[DateChek] [nvarchar](50) NULL,
[Malirecieve] [int] NULL
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[ChekTbl] Script Date: 11/28/2013 19:44:26 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[ChekTbl](
[ID] [int] NOT NULL,
[Shgh] [nvarchar](50) NULL,
[NameBankChek] [nvarchar](50) NULL,
[ShHChek] [nvarchar](50) NULL,
[ShChek] [nvarchar](50) NULL,
[DateChek] [nvarchar](50) NULL,
[Malirecieve] [int] NULL
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[CardToCardPeyment] Script Date: 11/28/2013 19:44:26 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[CardToCardPeyment](
[ID] [int] NULL,
[shgh] [nvarchar](50) NOT NULL,
[NameBank] [nvarchar](50) NULL,
[ShH] [nvarchar](50) NULL,
[ShPeygiri] [nvarchar](50) NULL,
[Malirecieve] [int] NULL
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[CardToCard] Script Date: 11/28/2013 19:44:26 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[CardToCard](
[ID] [int] NULL,
[shgh] [nvarchar](50) NULL,
[NameBank] [nvarchar](50) NULL,
[ShH] [nvarchar](50) NULL,
[ShPeygiri] [nvarchar](50) NULL,
[Malirecieve] [int] NULL,
[Type] [nvarchar](50) NULL
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[BlakList] Script Date: 11/28/2013 19:44:26 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[BlakList](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](50) NULL,
[Family] [nvarchar](50) NULL,
[Mobile] [nvarchar](50) NULL,
[Comm] [nvarchar](250) NULL,
CONSTRAINT [PK_BlakList] 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]
GO
/****** Object: Table [dbo].[Bank] Script Date: 11/28/2013 19:44:26 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Bank](
[ID] [int] IDENTITY(1,1) NOT NULL,
[DateSabt] [nvarchar](50) NULL,
[NameBank] [nvarchar](50) NULL,
[NameShobe] [nvarchar](50) NULL,
[ShHesab] [nvarchar](50) NULL,
[TypHesab] [nvarchar](50) NULL,
[SahebHesab] [nvarchar](50) NULL,
[Account] [int] NULL
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[Amlak] Script Date: 11/28/2013 19:44:26 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[Amlak](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Typehome] [nvarchar](50) NULL,
[TypeMelk] [nvarchar](50) NULL,
[malek] [nvarchar](50) NULL,
[Tel] [char](10) NULL,
[Date] [nvarchar](50) NULL,
[Addres] [nvarchar](200) NULL,
[samt] [nvarchar](50) NULL,
[counttabaghe] [int] NULL,
[countvahed] [int] NULL,
[moneykol] [nvarchar](50) NULL,
[tabaghe] [nchar](10) NULL,
[zirbana] [nvarchar](50) NULL,
[khab] [int] NULL,
[metrajbalkon] [nvarchar](50) NULL,
[phone] [bit] NULL,
[serviceticken] [varchar](50) NULL,
[servicewc] [varchar](50) NULL,
[kafposh] [varchar](50) NULL,
[parking] [bit] NULL,
[anbari] [bit] NULL,
[shomine] [bit] NULL,
[masahat] [varchar](50) NULL,
[tolebar] [varchar](50) NULL,
[darremot] [bit] NULL,
[hayat] [bit] NULL,
[shofaj] [bit] NULL,
[pakeyj] [bit] NULL,
[koler] [bit] NULL,
[gaz] [bit] NULL,
[ifone] [bit] NULL,
[asansor] [bit] NULL,
[agebana] [varchar](50) NULL,
[nama] [nvarchar](50) NULL,
[manbadata] [varchar](50) NULL,
[sokonatmalek] [varchar](50) NULL,
[comm] [varchar](200) NULL,
[takhleye] [bit] NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
/****** Object: Table [dbo].[AlarmUsers] Script Date: 11/28/2013 19:44:26 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[AlarmUsers](
[ID] [int] IDENTITY(1,1) NOT NULL,
[DateSabt] [nvarchar](50) NULL,
[NameUser] [nvarchar](50) NULL,
[Comm] [nvarchar](250) NULL,
[DateErsal] [nvarchar](50) NULL,
[Time] [nvarchar](50) NULL,
[comp] [nvarchar](250) NULL,
[position] [nvarchar](50) NULL,
CONSTRAINT [PK_AlarmUsers] 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]
GO
/****** Object: Table [dbo].[AirTbl] Script Date: 11/28/2013 19:44:26 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[AirTbl](
[Id] [int] NULL,
[Shgh] [nvarchar](50) NULL,
[Company] [nvarchar](50) NULL,
[ShP] [nvarchar](50) NULL,
[Mabda] [nvarchar](50) NULL,
[Maghsad] [nvarchar](50) NULL,
[NameTarafhesab] [nvarchar](50) NULL,
[NameNamayande] [nvarchar](50) NULL,
[MonyP] [int] NULL,
[DateHarekat] [nvarchar](50) NULL,
[TimeHarekat] [nvarchar](50) NULL,
[Local] [nvarchar](50) NULL,
[Comm] [nvarchar](500) NULL,
[Managment] [bit] NULL,
[modirefanni] [bit] NULL,
[DateBargasht] [nvarchar](50) NULL,
[Timebargasht] [nvarchar](50) NULL
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[Account] Script Date: 11/28/2013 19:44:26 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Account](
[Id] [int] IDENTITY(1,1) NOT NULL,
[DateSabtenam] [nvarchar](50) NULL,
[NameAcc] [nvarchar](100) NULL,
[NameNamayande] [nvarchar](80) NULL,
[Shmobile] [nvarchar](50) NULL,
[Shsabet] [nvarchar](50) NULL,
[Email] [nvarchar](50) NULL,
[Address] [nvarchar](1000) NULL,
[Comm] [nvarchar](500) NULL,
[Daste] [nvarchar](50) NULL,
CONSTRAINT [PK_Account_1] 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]
GO

نیما حتمی
پنج شنبه 07 آذر 1392, 19:04 عصر
و این هم کد سی شارپم:


SqlConnection connect = new SqlConnection();
connect.ConnectionString = Ajans.Properties.Settings.Default.Connection.ToStr ing();
string conditions = "1=1";
if (checkBox1.Checked == true)
{
conditions += "and MP.namebank='" + NameBank.Text + "' ";
}
else
{
checkBox1.Checked = false;
}
if (checkBox4.Checked == true)
{
conditions += "and SP.dateharekat='" + DateHarekat.Value.FarsiSelectedDate + "' ";
}
else
{
checkBox4.Checked = false;
}
if (checkBox5.Checked == true)
{
conditions += "and MR.Nametor='" + nametor.Text + "' ";
}
else
{
checkBox5.Checked = false;
}
if (checkBox2.Checked == true)
{
conditions += "and MR.DateRecieve between '" + From.Value.FarsiSelectedDate + "' and '" + To.Value.FarsiSelectedDate + "' ";
}
else
{
checkBox2.Checked = false;
}
//-------------------پرداختی ها
string conditions1 = "1=1";
if (checkBox1.Checked == true)
{
conditions1 += "and CardToCardPeyment.NameBank='" + NameBank.Text + "' ";
}
else
{
checkBox1.Checked = false;
}
if (checkBox4.Checked == true)
{
conditions1 += "and customer.dateharekat='" + DateHarekat.Value.FarsiSelectedDate + "' ";
}
else
{
checkBox4.Checked = false;
}
if (checkBox5.Checked == true)
{
conditions1 += "and MaliPeyment.Nametor='" + nametor.Text + "'";
}
else
{
checkBox5.Checked = false;
}
if (checkBox2.Checked == true)
{
conditions1 += "and MaliPeyment.DateRecieve between'" + From.Value.FarsiSelectedDate + "' and '" + To.Value.FarsiSelectedDate + "'";
}
else
{
checkBox2.Checked = false;
}
if (Type.SelectedIndex == 0)
{
DG.Visible = true;
pardakht.Visible = false;
try
{
connect.Open();
// SqlDataAdapter saeed = new SqlDataAdapter(@"select MaliRecieve.shgh as [ش قرارداد],MaliRecieve.FamilyM as [نام مسافر],MaliRecieve.Nametor as [نام تور],customer.dateharekat as [تاریخ حرکت],customer.Count as تعداد,CardtoCard.Malirecieve as مبلغ ,MaliRecieve.TypeRecieve as [نوع دریافت], CardtoCard.ShPeygiri as [ش پیگیری],MaliRecieve.tarafhesab as [طرف حساب] From MaliRecieve inner join customer on malirecieve.shgh=customer.shgh inner join cardtocard on cardtocard.shgh=malirecieve.shgh where Customer.typePassenger='true' And " + conditions, connect);
SqlDataAdapter saeed = new SqlDataAdapter(@"select MR.ShGh AS شرح
,MR.FamilyM AS [نام مسافر]
,SP.dateharekat AS [تاریخ حرکت]
,MR.DateRecieve as [تاریخ دریافت]
,SP.count AS تعداد
,MP.Malirecieve AS مبلغ
,MR.TypeRecieve AS [نوع دریافتی]
,MP.ShPeygiri AS [ش پیگیری]
,MR.Nametor AS [نام تور]
,MR.tarafhesab AS [طرف حساب]
From
malirecieve MR Full Outer Join cardtocard MP
ON
MR.ShGh = MP.ShGh Full Outer Join customer SP ON MR.Shgh=SP.Shgh where SP.typePassenger='true' And " + conditions , connect);
DataTable t = new DataTable(); saeed.Fill(t);
DG.DataSource = t;
DG.RetrieveStructure();
DG.RootTable.Columns[5].FormatString = "#,#";
}
catch (Exception x)
{
MessageBox.Show(x.Message.ToString());
}
finally
{
connect.Close();
}
}
else
{
if (Type.SelectedIndex == 1)
{
DG.Visible = false;
pardakht.Visible = true;
try
{
connect.Open();
SqlDataAdapter insert = new SqlDataAdapter(@"select MaliPeyment.shgh as [ش قرارداد],MaliPeyment.FamilyM as [نام مسافر],MaliPeyment.Nametor as [نام تور],customer.dateharekat as [تاریخ حرکت],customer.Count as تعداد,CardToCardPeyment.Malirecieve as مبلغ ,MaliPeyment.TypeRecieve as [نوع پرداخت],CardToCardPeyment.ShPeygiri as [ش پیگیری] From MaliPeyment Full Outer Join CardToCardPeyment on MaliPeyment.shgh=CardToCardPeyment.shgh Full Outer Join customer on MaliPeyment.shgh=customer.shgh where Customer.typePassenger='true' And " + conditions1, connect);
DataTable t = new DataTable(); insert.Fill(t);
pardakht.DataSource = t;
pardakht.RetrieveStructure();
pardakht.RootTable.Columns[5].FormatString = "#,#";
}
catch (Exception x)
{
MessageBox.Show(x.Message.ToString());
}
finally
{
connect.Close();
}
}
else
{
}
}

نیما حتمی
پنج شنبه 07 آذر 1392, 19:08 عصر
دوستان وقتی در جدول malirecieve یک سطر با شماره قرارداد 1000 مثلا باشه و در جدول cardtocard هم یه رکورد با همون شماره مشکلی نیست و دستور سلکت من درست کار میکنه ولی وقتی همومن شماره 1000 میادتوسط کاربر ویرایش میشه و تعداد سطرای malirecieve میشه 2 تا وcardtocard هم میشه 2 دستور سلکت من میاد 4 سطرو نشون میده که دوتای اون تکراری هستش.

Mahmoud.Afrad
پنج شنبه 07 آذر 1392, 20:00 عصر
نباید از Full outer join استفاده کنی.

نیما حتمی
پنج شنبه 07 آذر 1392, 20:05 عصر
من inner,left,right هم استفاده کردم جواب نداد چیکار کنم؟

Mahmoud.Afrad
پنج شنبه 07 آذر 1392, 21:18 عصر
از inner join استفاده کن.
ID در هر سه جدول باید کلید اصلی باشه. در اینصورت حاصل join متفاوت خواهد بود. اگر قراره سطرهای تکراری در جدول ها وجود داشته باشه باید به جای Insert ، سطری که از قبل موجود هست رو Update کنید.
در هر صورت اگر سطرهای تکراری داری باید براساس همه ستونهایی که سلکت میکنی گروه بندی انجام بدی:

select MR.ShGh AS شرح
,MR.FamilyM AS [نام مسافر]
,SP.dateharekat AS [تاریخ حرکت]
,MR.DateRecieve as [تاریخ دریافت]
,SP.count AS تعداد
,MP.Malirecieve AS مبلغ
,MR.TypeRecieve AS [نوع دریافتی]
,MP.ShPeygiri AS [ش پیگیری]
,MR.Nametor AS [نام تور]
,MR.tarafhesab AS [طرف حساب]
From
malirecieve MR INNER Join cardtocard MP
ON
MR.ShGh = MP.ShGh INNER Join customer SP ON MR.Shgh=SP.Shgh where SP.typePassenger='true' And ..........
group by MR.ShGh
,MR.FamilyM
,SP.dateharekat
,MR.DateRecieve
,SP.count
,MP.Malirecieve
,MR.TypeRecieve
,MP.ShPeygiri
,MR.Nametor
,MR.tarafhesab

نیما حتمی
جمعه 08 آذر 1392, 10:42 صبح
دوست عزیز میدونم این سوال شمارو هم مثل من کلافه کرده

شرمنده ولی من سطر تکراری ندارم تو نوشته هام گفتم این سلکتی که من بستم نمیدونم چرا میاد سطرهای malirecieve*سطرهای cardtocard میکنه وبه جای نشون دادن مثلا 2 سطر 4 سطر نشون میده در صورتی که واقعا 4 سطر نیست و 2 سطر هستش

نیما حتمی
جمعه 08 آذر 1392, 11:12 صبح
به تصویر نگاه کنین:
113327
تنگستانی در جدول malirecieve دو سطره و در جدول cardtocard یک سطر اینجا تو گزارش 2 سطر نشون میده یعنی میاد او سلکت تعداد سطرهای malirecieve*cardtocard میکنه و در گزارش قرارمیده
صالحی 2 سطر در malirecieve دو سطر هم در cardtocard داره که اینجا همون طور که میبینین 4 سطر داره نشون میده که دو سطر آن تکراری هستش

برای جلوگیری از این اتفاق چیکار کنم

اساتید محترم شما تجاربتون بیشتره لطفا کمک کنین

aslan
جمعه 08 آذر 1392, 12:08 عصر
سلام


تنگستانی در جدول malirecieve دو سطره و در جدول cardtocard یک سطر اینجا تو گزارش 2 سطر نشون میده یعنی میاد او سلکت تعداد سطرهای malirecieve*cardtocard میکنه و در گزارش قرارمیده
صالحی 2 سطر در malirecieve دو سطر هم در cardtocard داره که اینجا همون طور که میبینین 4 سطر داره نشون میده که دو سطر آن تکراری هستش



خب انتظارتون چیه ؟ ؟ میخواین هر کدوم از این افراد در یک سطر نشون داده بشه ؟ و یا ..... ؟
اگر برای هر رکورو از جدول cardtocard یک سطر میخواهید سلکت زیر را تست کنید ...........


SELECT MR.ShGh AS شرح, MR.FamilyM AS [نام مسافر], SP.dateharekat AS [تاریخ حرکت], MR.DateRecieve AS [تاریخ دریافت], SP. COUNT AS تعداد,
MR.MonyRecieve AS مبلغ, MR.TypeRecieve AS [نوع دریافتی], MP.ShPeygiri AS [ش پیگیری], MR.Nametor AS [نام تور], MR.tarafhesab AS [طرف حساب]
FROM cardtocard MP
LEFT OUTER JOIN malirecieve MR ON MR.ShGh = MP.ShGh
INNER JOIN customer SP ON MR.Shgh = SP.Shgh
WHERE SP.typePassenger = 'true'

نیما حتمی
جمعه 08 آذر 1392, 12:44 عصر
سلام اصلان جان

من فیلدهایی که تو سلکتم از جداولی که مشاهده میکنی رو میخوام در گزارشم نشون بدم

هر سه این جداول فیلد مشترک shgh رو دارن ولی همون طور که گفتم میره واسه خودش تعداد سطرای malirecieve*ardtocard میکنه که ان باعث میشه اگه مثلاقرارداد 1000در malirecieve 2 سطر داره و در cardtocard هم دو سطر داره در گزارش 4 سطر نمایش داده شه

aslan
جمعه 08 آذر 1392, 13:01 عصر
سلام دوست عزیز
لطفا برای اینکه زودتر به نتیجه برسیم دقیقتر جواب بدین :
در گرید پست شماره 22 این تاپیک انتظارتون اینه که مثلا اطلاعات آقای تنگستانی در یک سطر و اطلاعات آقای صالحی در دو سطر نشان داده شود . درسته ؟
اگر درسته سلکت پست 23 تاپیک و اجرا کردین یا نه ؟ و اگر اجرا کردین نتیجه چی بود ؟

نیما حتمی
جمعه 08 آذر 1392, 13:15 عصر
جدول malirecieve اطلاعات دریافتی مبالغ(مبلغ-تاریخ دریافت-تاریخ ثیت و نوع دریافت که کارت به کارت یا نقدی ویا ...) وجدول cardtocard اطلاعات (نام بانک-شماره پیگیری-شماره حساب)رو نگهداری میکنن.حالا واسه شماره قرارداد ممکنه مسافر با یه پرداخت قراردادشو تسویه کنه یا ممکنه چندین پرداخت داشته باشه تا قراردادش تسویه شه.من میخوام در جدول mlirecieve با شماره قرارداد خودش هر چندسطر هست که در cardtocard هم هست نمایش داده شه.(دقیقا هر چند تاسطر درmalirecieve با شماره قرارداد واحد در cardtocard هست نمایش داده بشه)مثلا همین صالحی رو دیدی تو تصویر دیگه 2 سطر در malirecieve داره با شماره قرارداد1003 و دو سطر هم در cardtocard داره با شماره قرارداد1003 حالا در گزارش باید 2 سطر نشون بده که اطلاعات دریافتی از مسافر هستش با اون فیلدایی که در گزارش دیدی ولی چهار سطر نشون میده

نیما حتمی
جمعه 08 آذر 1392, 13:17 عصر
اصلان جان من میخوام در واقع تعداد سطرای malirecieve در گزارش نشون داده شه در صورتی که mairecieve*cardtocard در گزارش نشون داده میشه

aslan
جمعه 08 آذر 1392, 13:32 عصر
خب
یه پیشنهاد :
فعلا Customer را از سلکت حذف کنید و سلکت زیر را اجرا کنید و ببینید باز رکورد تکراری دارین یا نه ؟


select MR.ShGh AS شرح
,MR.FamilyM AS [نام مسافر]
,MR.DateRecieve as [تاریخ دریافت]
,MP.Malirecieve AS مبلغ
,MR.TypeRecieve AS [نوع دریافتی]
,MP.ShPeygiri AS [ش پیگیری]
,MR.Nametor AS [نام تور]
,MR.tarafhesab AS [طرف حساب]
From
malirecieve MR INNER Join cardtocard MP
ON
MR.ShGh = MP.ShGh

نیما حتمی
جمعه 08 آذر 1392, 13:35 عصر
این کارو کردم باز تکراری میده

aslan
جمعه 08 آذر 1392, 13:51 عصر
خب
جون اشراف کامل به جداول و اطلاعاتتون ندارم مجبورم بازم سوال کنم :
در جدول MR برای آقای صالحی دو رکورد دارین با شماره 1003
در جدول MP نیز برای همین آقا دو رکورد دارین با همین شماره 1003
درسته ؟
اگر درسته پس فیلد ممیزه برای برابری رکورد اول جدول MR با جدول MP کدومه ؟ یعنی چه جوری تشخیص بدیم که در رکورد اول (1003) از جدول MR کدوم رکورد جدول MP باید قرار گیرد ؟

نیما حتمی
جمعه 08 آذر 1392, 14:00 عصر
اصلان جان مرسی عزیزم درست شد من بعد از MR.shgh=MP.shgh MR.ID=Mp.ID اضافه کردم الان درست کار میکنه

aslan
جمعه 08 آذر 1392, 14:13 عصر
خوبه
در ضمن اگر برای هر ID از جدول MR بیش از یک رکورد در جدول دوم داشته باشین ( از همون ID ) لازمه که گروهبندی کنین
وگرنه فکر کنم نیازی به MR.shgh=MP.shgh هم نباشه و همون MR.ID=MP.ID کافی باشه ............
موفق باشید

Mahmoud.Afrad
جمعه 08 آذر 1392, 20:47 عصر
شرط MR.ID=Mp.ID اشتباه است. چون ID این دو جدول هیچ ربطی به هم ندارند.

شما گروهبندی(پست 20) که من گفتم رو تست کردی؟

در ضمن بهتره عکس از داده های سه جدول بزاری به جای اینکه عکس از نتیجه قرار بدی.

saeedchoopani
شنبه 09 آذر 1392, 09:12 صبح
از دستور distinct استفاده کرده؟شاید مشکلتو حل کنه.select distinct name from table1 اینم نحوه نگارشش