PDA

View Full Version : واکشی اطلاعات یک فیلد شماره تلفن با شماره های متفاوت و نامهای یکسان و نمایش در جلوی هر نام



reza4359
سه شنبه 11 آبان 1395, 01:14 صبح
سلام دوستان
چطوری امکانش هست که اینکار را انجام بدیم:



شماره تلفن










32260467

سجاد
رضایی
8
1756636125

امیر


32260474
سجاد
رضایی
8
1756636125

امیر


32260476
سجاد
رضایی
8
1756636125

امیر


32260477
سجاد
رضایی
8
1756636125

امیر


32268541
سجاد
رضایی
8
1756636125

امیر


32269221
سجاد
رضایی
8
1756636125

امیر














































اسم و فامیل یکسانه ولی شماره تلفنهای اون متفاوته
حالا میخوام با یک select اسم و فامیل را در یک رکورد بیاره و شماره های متفاوت اون را جلوی آن نمایش بده
باید چکار کرد؟
ممنون

Mahmoud.Afrad
سه شنبه 11 آبان 1395, 20:49 عصر
http://barnamenevis.org/showthread.php?510710

(http://barnamenevis.org/showthread.php?510710-%D9%86%D9%85%D8%A7%DB%8C%D8%B4-%D8%B3%D8%B7%D8%B1-%D9%87%D8%A7-%D8%AF%D8%B1-%DB%8C%DA%A9-%D8%AE%D8%B7-%D8%A8%D8%A7-%D8%AC%D8%AF%D8%A7-%DA%A9%D8%B1%D8%AF%D9%86-%DA%A9%D8%A7%D9%85%D8%A7)http://barnamenevis.org/showthread.php?372614 (http://barnamenevis.org/showthread.php?372614-%DA%86%DA%AF%D9%88%D9%86%DA%AF%DB%8C-%D8%AA%D8%A8%D8%AF%DB%8C%D9%84-%DA%86%D9%86%D8%AF-%D8%B1%DA%A9%D9%88%D8%B1%D8%AF-%D8%A8%D9%87-%DB%8C%DA%A9-%D8%B1%DA%A9%D9%88%D8%B1%D8%AF)

reza4359
چهارشنبه 12 آبان 1395, 00:06 صبح
http://barnamenevis.org/showthread.php?510710

(http://barnamenevis.org/showthread.php?510710-%D9%86%D9%85%D8%A7%DB%8C%D8%B4-%D8%B3%D8%B7%D8%B1-%D9%87%D8%A7-%D8%AF%D8%B1-%DB%8C%DA%A9-%D8%AE%D8%B7-%D8%A8%D8%A7-%D8%AC%D8%AF%D8%A7-%DA%A9%D8%B1%D8%AF%D9%86-%DA%A9%D8%A7%D9%85%D8%A7)http://barnamenevis.org/showthread.php?372614 (http://barnamenevis.org/showthread.php?372614-%DA%86%DA%AF%D9%88%D9%86%DA%AF%DB%8C-%D8%AA%D8%A8%D8%AF%DB%8C%D9%84-%DA%86%D9%86%D8%AF-%D8%B1%DA%A9%D9%88%D8%B1%D8%AF-%D8%A8%D9%87-%DB%8C%DA%A9-%D8%B1%DA%A9%D9%88%D8%B1%D8%AF)

ممنون ولی مشکل حل نشد اگه ممکنه راهنمایی کنید باید چکار کرد؟

reza4359
چهارشنبه 12 آبان 1395, 23:54 عصر
سلام دوستان
من یکبار دیگه توضیح بدم
من میخوام چندین ستون که اطلاعات فیلد های اونها با هم یکسانه و فقط شماره تلفن اونها با هم فرق میکنه را شماره تلفن های اون شخص را تجمیع کنم و در جلوی اون رکورد قرار بدم که اگه مثلا 10 تا رکورد برای اون شخص ثبت شده اونو به یک رکورد تبدیل کنم و فقط شماره های تلفن اون را جلوی رکورد اون شخص که یک رکورد هست قرار بدم

mahyar501
پنج شنبه 13 آبان 1395, 00:29 صبح
بهترین راه اینه که تلفنهای هر شخص رو توی یک فیلد بصورت xml ذخیره کنی. همونطور که یکی از دوستان دو تا لینک برات گذاشت

reza4359
پنج شنبه 13 آبان 1395, 10:28 صبح
بهترین راه اینه که تلفنهای هر شخص رو توی یک فیلد بصورت xml ذخیره کنی. همونطور که یکی از دوستان دو تا لینک برات گذاشت

ممنون
میتونید یک مثال در این زمینه بزنید
خیلی بهش نیاز دارم

aslan
پنج شنبه 13 آبان 1395, 11:48 صبح
سلام
لینک زیر را ببینید :
https://www.mssqltips.com/sqlservertip/2914/rolling-up-multiple-rows-into-a-single-row-and-column-for-sql-server-data/

reza4359
پنج شنبه 13 آبان 1395, 23:46 عصر
دوستان من این دستور select را براش نوشتم ولی بازم یک رکورد را واکشی نمیکنه
SELECT SS.lname,STUFF((SELECT '; ' + US.tel FROM tbl_tel US WHERE US.id = SS.id ORDER BY tel FOR XML PATH('')), 1, 1, '') [no1] FROM tbl_tel SS GROUP BY SS.id, SS.lname ORDER BY 1
اینم جدول:
143327باید چکار کرد؟
کد را چطوری تغییر بدم؟

aslan
جمعه 14 آبان 1395, 01:31 صبح
سلام
شکلهای زیر را ببینید :

143328
143329

Mahmoud.Afrad
جمعه 14 آبان 1395, 11:57 صبح
دوستان من این دستور select را براش نوشتم ولی بازم یک رکورد را واکشی نمیکنه
SELECT SS.lname,STUFF((SELECT '; ' + US.tel FROM tbl_tel US WHERE US.id = SS.id ORDER BY tel FOR XML PATH('')), 1, 1, '') [no1] FROM tbl_tel SS GROUP BY SS.id, SS.lname ORDER BY 1
اینم جدول:
143327باید چکار کرد؟
کد را چطوری تغییر بدم؟

این جدول شما نرمال نیست. باید یک جدول برای شخص و یک جدول برای تلفن داشته باشید که با کد شخص در ارتباط هستند.
http://stackoverflow.com/questions/5344004/single-sql-select-for-one-to-many-relationship-tables-using-delimiter-in-column

reza4359
جمعه 14 آبان 1395, 14:46 عصر
ممنونم دوست عزیز من اومدم از دو جدول استفاده کردم و مشکل حل شد
فقط شماره ها رو با این دستور select میاد همه را داخل یک فیلد با کاما از هم جدا میکنه اگه بخوام هر شماره ای را داخل یک فیلد جدا گانه بذارم باید چکار کنم؟
کد به چه صورت تغییر میکنه؟
143336
الان به این صورت هست (عکس بالا)
حالا میخوام هر شماره ای را در یک فیلد جداگانه قرار بدم
باید چکار کنم؟
دوستان یک موضوع دیگه اینکه من اطلاعات رو از طریق یک فایل اکسل وارد دیتابیس میکنم و امکان تعریف id نیست که با توجه به id بیام گروه بندی کنم
من یک فایل اکسل را وارد دیتابیس میکنم و یک فایل دیگه اکسل وارد میکنم و فایل دومی میاد داخل فایل اولی جستجو میکنه و شماره هایی را که مربوط به آن اسامی هست را جلوی هر نام وارد میکنه و اگر مثلا 10 رکورد سعید رجایی داریم میاد اونها رو به یک رکورد تبدیل میکنه و تمام شماره هاشو جلوی او میاره
حالا فقط مشکل اینه که شماره ها رو بیاد هر کدوم را داخل یک فیلد قرار بده نه همه رو داخل یک فیلد



دوستان این کدیه که استفاده کردم
SqlConnection con = new SqlConnection();
SqlCommand cmd = new SqlCommand();
con.ConnectionString = strCon;
SqlDataAdapter adapt = new SqlDataAdapter();
adapt.SelectCommand = new SqlCommand();
adapt.SelectCommand.Connection = con;
adapt.SelectCommand.CommandText = string.Format("SELECT ss.tel,SS.lname,ss.name,ss.shsh,ss.meli,ss.birthda y,ss.father,STUFF((SELECT ' | ' + US.tel FROM tbl_tel US WHERE (US.meli = SS.meli) and (US.lname=SS.lname) and (US.name=SS.name) and (US.father=SS.father) ORDER BY tel FOR XML PATH('')), 1, 1, '') [no1] FROM tbl_ic SS GROUP BY ss.tel,SS.lname,ss.name,ss.shsh,ss.meli,ss.birthda y,ss.father ORDER BY 1");

System.Data.DataTable dt = new System.Data.DataTable();
adapt.Fill(dt);

dataGridViewX5.DataSource = dt;
dataGridViewX5.Visible = true;
dataGridViewX5.Update();
dataGridViewX5.Refresh();
تمام شماره ها داخل فیلد [no1 ] که داخل دستور select گذاشتم نمایش داده میشه
حالا میخوام این کد را تغییر بدم که هر شماره داخل یک فیلد جداگانه نشون داده بشه
حالا باید جه کاری انجام بدم؟

Mahmoud.Afrad
دوشنبه 17 آبان 1395, 21:40 عصر
ببینید، چون تعداد تلفن ها ثابت نیست ، ایجاد ستون برای هر تلفن به این راحتی نیست که با یک تغییر کوچک در کوئری تون بتونید عملیش کنید.

راهنمایی که میتونم بکنم اینه که با dynamic pivot میتونید به جواب برسید(که البته از لحاظ امنیتی توصیه نمیشه ولی در جایی که تنها راه حل هست مجبور به استفاده هستید)

reza4359
دوشنبه 17 آبان 1395, 23:23 عصر
ممنون
حالا اگه امکانش هست درباره dynamic pivot یک توضیحی بدهید.

juza66
سه شنبه 18 آبان 1395, 01:21 صبح
سلام

دوستان اشاره کردن، شما دو جدول یکی کد مشتری و نام مشتری و جدول دومی کد مشتری و شماره تلفن مشتری بذار و اینجور واکشی کن.

ژیار رحیمی
سه شنبه 18 آبان 1395, 06:28 صبح
مشکل شما طراحی نامتعارف جدول هست بهتر طراحی جدول رو اصلاح کنی(آنچه جناب افراد بهش اشاره کردن). به نظر من همون کویری قبلی که اجتماع شماره ها رو داخل یک ستون می ریزی کفایت کن .سپس با اصلاح ستون آخر(شماره ها) در DataTable میتونی به نتیجه یی که میخوای برسی

reza4359
سه شنبه 18 آبان 1395, 08:09 صبح
مشکل شما طراحی نامتعارف جدول هست بهتر طراحی جدول رو اصلاح کنی(آنچه جناب افراد بهش اشاره کردن). به نظر من همون کویری قبلی که اجتماع شماره ها رو داخل یک ستون می ریزی کفایت کن .سپس با اصلاح ستون آخر(شماره ها) در DataTable میتونی به نتیجه یی که میخوای برسی

ممنونم آقای رحیمی لطفا بگین چطوری با تغییر data table میشه ستون اخر را تفکیک کرد و هر شماره ای را داخل یک فیلد ریخت؟

ژیار رحیمی
سه شنبه 18 آبان 1395, 09:16 صبح
ابتدا باید ماکزیمم تعداد ستون هایی که قرار به دیتاتیبل اضافه شود بدست بیاری با بدست آوردن بیشترین طول ستون آخر(اجتماع شماره ها) و تفکیک آن ،تعداد ستون های ماکزیمم بدست میاد.
سپس به تعداد ماکزیمم ستون بدست امده ،ستون به دیتاتیبل اضافه کن.پس با یک حلقه for روی دیتاتیبل ( ستون مورد نظر را تفکیک و مقادیر رادر ستونهای متناظر دیتاتیبل قرار بده)در آخر هم میتونی ستون اضافه(اجتماع شماره ها) را از دیتاتیبل حذف نمایی

reza4359
سه شنبه 18 آبان 1395, 12:25 عصر
ممنونم مهندس رحیمی از راهنمایی شما
چطوری اجتماع شماره ها را که داخل یک فیلد هست را از هم تفکیک کنم ؟
ماکزیمم شماره ها هم معلومه حداکثر 10 شماره تلفن
بازم ممنون از وقتی که گذاشتید

ژیار رحیمی
سه شنبه 18 آبان 1395, 13:35 عصر
خب از تصویر بالا که نتیجه کویری داخل دیتاگرید ریختی شما از کاراکتر | برای جدا سازی شماره ها استفاده کردی کافیه محتوای سلول که یک رشته هست را با split کردن ،جداسازی کرد.

Mahmoud.Afrad
سه شنبه 18 آبان 1395, 14:30 عصر
ممنونم مهندس رحیمی از راهنمایی شما
چطوری اجتماع شماره ها را که داخل یک فیلد هست را از هم تفکیک کنم ؟
ماکزیمم شماره ها هم معلومه حداکثر 10 شماره تلفن
بازم ممنون از وقتی که گذاشتید

دوستان در مورد دیتاتیبل توضیح میدن ، من دیگه وارد نمیشم.
اما در مورد pivot ؛ چون حداکثر برای تعداد تلفن ها تعیین کردید با یک pivot قابل حل هست.(اگر تعداد تلفن ها حداکثر نداشته باشه یا تعداد زیاد باشه ، کوئری زیر جوابگو نیست)

اگر جدول تلفن ها رو به صورت زیر فرض کنیم:
CREATE TABLE [dbo].[Telephone](
[id] [int] IDENTITY(1,1) NOT NULL,
[personId] [int] NULL,
[phoneNumber] [varchar](50) NULL,
CONSTRAINT [PK_Telephone] 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]
کوئری زیر جواب شماست
declare @t as TABLE( id int , personid int , phone varchar(max) , rownumber bigint);

insert into @t
select
*,
ROW_NUMBER() over (PARTITION by personid order by id asc) as rownumber
from telephone

select
ttt.personid,
max([1]) ,
max([2]) ,
max([3]) ,
max([4]) ,
max([5]) ,
max([6]) ,
max([7]) ,
max([8]) ,
max([9]) ,
max([10])
from
(
select
pppp.personid, [1] , [2] , [3] , [4] , [5] , [6] , [7] , [8] , [9] , [10]
from @t
pivot
(
max(phone)
for rownumber
in([1] , [2] , [3] , [4] , [5] , [6] , [7] , [8] , [9] , [10])
) as pppp
) ttt
group by personid
خروجی رو میتونید با جدول اشخاص join کنید. اگر هم نمیتونید جدولها رو تفکیک کنید، کافیه قسمت کوئری بالا رو اصلاح کنید.

reza4359
سه شنبه 18 آبان 1395, 14:40 عصر
خب از تصویر بالا که نتیجه کویری داخل دیتاگرید ریختی شما از کاراکتر | برای جدا سازی شماره ها استفاده کردی کافیه محتوای سلول که یک رشته هست را با split کردن ،جداسازی کرد.

ممنون
بعد از جدا سازی به چه صورت هر شماره را داخل یک فیلد بذارم
میشه از طریق کد توضیح بدید ممنون میشم

reza4359
سه شنبه 18 آبان 1395, 16:34 عصر
سلام آقای افراد ممنونم از کدی که گذاشتید
مشکل من اینه که اطلاعات از طریق فایل اکسل وارد میشه و اطلاعات داخل فایل مشخصه و نمیشه براش id و یا کلید خارجی تعریف کرد
به این صورت که ما یک فایل اکسل داریم متشکل از 7 فیلد و این فایل در دیتابیس دخیره میشه
و یک فایل دیگه داریم بازم متشکل از 7 فیلد حالا میخوام وقتی فایل دوم وارد شد بره و داخل دیتابیس جستجو کنه و شماره تلفن ها رو واکشی کنه
و هر شماره ای را داخل یک فیلد جلوی مشخصات اون فرد بریزه
حالا مشکل من الان فقط تفکیک اون شماره هاست که همه داخل یک فیلد قرار دارند و با "|" از هم جدا شدند میخوام اینها رو از اون فیلد هر کدام را به فیلد جدا گانه ای انتقال بدم و هر شماره داخل یک فیلد قرار بگیره
حالا من با کوئری بالا مشکل واکشی شماره را به طور دقیق داخل یک فیلد انجام دادم
حالا اگه ممکنه از طریق کد یه توضیح بدید چطوری شماره های داخل این یک فیلد را با تغییر در data table به چند فیلد تغییر بدم که هر شماره بره داخل یک فیلد

Mahmoud.Afrad
سه شنبه 18 آبان 1395, 17:23 عصر
اسکریپت جداولی که دخیل هستند رو قرار بدید.



پ.ن:
دیتابیس sqlserver رو که خود شما طراحی کردید، درسته؟ حالا فایل اکسل هر اشتباهی داره چرا سعی نمیکنید طراحیتون رو درست کنید؟ یک ستون کلید اصلی به جدول اشخاص اضافه کنید و رابطه برقرار کنید. یا حتی میتونید ستون کد ملی رو کلید کنید.

juza66
سه شنبه 18 آبان 1395, 18:31 عصر
حالا اگه ممکنه از طریق کد یه توضیح بدید چطوری شماره های داخل این یک فیلد را با تغییر در data table به چند فیلد تغییر بدم که هر شماره بره داخل یک فیلد

اول تعداد تلفن دریافت شده رو مشخص کن و تویی آرایه بریز
بعدش با یک حلقه - کولن اضاف کن و متغییرت رو بهش پاس بده


یک سوال: چرا نظرات دوستان و اساتید رو توجه نمیکنید؟! دلیل خاصی داره؟ یعنی کار انجام شده و مشکل در نمایش دارید؟! نمیشه اصولی که دوستان اشاره کردن رعایت شود؟

reza4359
سه شنبه 18 آبان 1395, 20:48 عصر
اسکریپت جداولی که دخیل هستند رو قرار بدید.



پ.ن:
دیتابیس sqlserver رو که خود شما طراحی کردید، درسته؟ حالا فایل اکسل هر اشتباهی داره چرا سعی نمیکنید طراحیتون رو درست کنید؟ یک ستون کلید اصلی به جدول اشخاص اضافه کنید و رابطه برقرار کنید. یا حتی میتونید ستون کد ملی رو کلید کنید.

آقای افراد من جدولم را باید بر اساس فایل اکسلی که وارد میشه طراحی کنم
اگه یک فیلد ازش کم یا زیاد بشه که فایل وارد دیتابیس نمیشه وخطا میده فیلد های فایل اکسل و جدول دیتابیس باید تعدادش یکی باشه وگرنه خطامیده
اطلاعات وارد شده هم زیاده 300000 هزار داده یکجا وارد دیتابیس میشه
اگه امکانش هست روش دیتاتیبل را برام توضیح بدید چطوری با تغییر در دیتاتیبل و روش split کردن رشته با توجه به کوئری بالا میتونم شماره رو تفکیک کنم
با این روش مشکلم حل میشه

Mahmoud.Afrad
سه شنبه 18 آبان 1395, 21:06 عصر
اسکریپت جداولی که دخیل هستند رو قرار بدید.

reza4359
سه شنبه 18 آبان 1395, 21:52 عصر
اسکریپت جداولی که دخیل هستند رو قرار بدید.

دو جدول بهنامهای tbl_tel1 که اطلاعات اولیه هستند و با اکسل وارد میشوند و او فیلد های no1 , no2 ... هم فیلد هایی هست که قراره شماره های تفکیک شده در هر کدوم از اینها قرار بگیره
CREATE TABLE [dbo].[tbl_tel1](
[id] [int] IDENTITY(1,1) NOT NULL,
[name] [int] NULL,
[lname] [varchar](50) NULL,
[tel] [varchar](50) NULL,
[shsh] [varchar](50) NULL,
[meli] [varchar](50) NULL,
[birthday] [varchar](50) NULL,
[father] [varchar](50) NULL,
[no1] [varchar](50) NULL,
[no2] [varchar](50) NULL,
[no3] [varchar](50) NULL,
[no4] [varchar](50) NULL,
[no5] [varchar](50) NULL,
[no6] [varchar](50) NULL,
[no7] [varchar](50) NULL,
[no8] [varchar](50) NULL,
[no9] [varchar](50) NULL,
[no10] [varchar](50) NULL


CONSTRAINT [PK_tel] 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]
یک جدول دیگه هم به نام tbl_ic1 که اطلاعات درون اون با جدول اول مقایسه و مورد جستجو قرار میگیره و این جدول هم از طریق اکسل وارد برنامه میشه
CREATE TABLE [dbo].[tbl_ic1](
[id] [int] IDENTITY(1,1) NOT NULL,
[name] [varchar](50) NULL,
[lname] [varchar](50) NULL,
[tel] [varchar](50) NULL,
[shsh] [int] NULL,
[meli] [int] NULL,
[birthday] [varchar](50) NULL,
[father] [varchar](50) NULL


CONSTRAINT [PK_tel] 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]

Mahmoud.Afrad
سه شنبه 18 آبان 1395, 22:11 عصر
کدی که بنده گذاشتم رو کمی دستکاری میکردید به جواب میرسیدید.

declare @t as TABLE([meli] [varchar](50) NULL, [tel] [varchar](50) NULL, rownumber bigint);

insert into @t([meli], [tel], rownumber)
select [meli], [tel], ROW_NUMBER() over (PARTITION by [meli] order by [tel] asc) as rownumber
from tbl_tel

select *
from tbl_ic1
join (select Pivotresult_Set.[meli] ,
max([1]) as [no1] , max([2]) as [no2] , max([3]) as [no3] , max([4]) as [no4] ,
max([5]) as [no5] , max([6]) as [no6] , max([7]) as [no7] , max([8]) as [no8] ,
max([9]) as [no9] , max([10]) as [no10]
from (
select Pivot_Set.meli, [1] , [2] , [3] , [4] , [5] , [6] , [7] , [8] , [9] , [10]
from @t
pivot
( max(tel)
for rownumber in([1] , [2] , [3] , [4] , [5] , [6] , [7] , [8] , [9] , [10])
) as Pivot_Set
) Pivotresult_Set
group by Pivotresult_Set.[meli]
) Tel_Set
on tbl_ic1.meli = Tel_Set.[meli]
اگر نیاز به آپدیت هست میتونید همین کوئری رو تغییر بدید تا tbl_tel1 آپدیت بشه.

reza4359
چهارشنبه 19 آبان 1395, 00:24 صبح
واقعا ممنونم آقای افراد مشکل حل شد
واقعا نمیدونم چطوری ازتون تشکر کنم خیلی لطف کردید
حالا اگه بخوام یه شرط (where ) به این کوئری اضافه کنم باید کدوم قسمتش بذارم
مثلا اگر فقط بر اساس نام و نام خانوادگی شماره هار رو بیاره یا بر اساس فقط کد ملی یا نام پدر

reza4359
چهارشنبه 19 آبان 1395, 00:52 صبح
کدی که بنده گذاشتم رو کمی دستکاری میکردید به جواب میرسیدید.

declare @t as TABLE([meli] [varchar](50) NULL, [tel] [varchar](50) NULL, rownumber bigint);

insert into @t([meli], [tel], rownumber)
select [meli], [tel], ROW_NUMBER() over (PARTITION by [meli] order by [tel] asc) as rownumber
from tbl_tel

select *
from tbl_ic1
join (select Pivotresult_Set.[meli] ,
max([1]) as [no1] , max([2]) as [no2] , max([3]) as [no3] , max([4]) as [no4] ,
max([5]) as [no5] , max([6]) as [no6] , max([7]) as [no7] , max([8]) as [no8] ,
max([9]) as [no9] , max([10]) as [no10]
from (
select Pivot_Set.meli, [1] , [2] , [3] , [4] , [5] , [6] , [7] , [8] , [9] , [10]
from @t
pivot
( max(tel)
for rownumber in([1] , [2] , [3] , [4] , [5] , [6] , [7] , [8] , [9] , [10])
) as Pivot_Set
) Pivotresult_Set
group by Pivotresult_Set.[meli]
) Tel_Set
on tbl_ic1.meli = Tel_Set.[meli]
اگر نیاز به آپدیت هست میتونید همین کوئری رو تغییر بدید تا tbl_tel1 آپدیت بشه.
کد اولی که گذاشتید درست جواب داد ولی این بالایی را که اصلاح کردید میاد سه تا فیلد جا میذاره و بعد دوباره کد ملی را insert میکنه
و بعد شماره ها را داخل فیلد های 4 به بعد میذاره

Mahmoud.Afrad
چهارشنبه 19 آبان 1395, 01:37 صبح
کد اولی که گذاشتید درست جواب داد ولی این بالایی را که اصلاح کردید میاد سه تا فیلد جا میذاره و بعد دوباره کد ملی را insert میکنه
و بعد شماره ها را داخل فیلد های 4 به بعد میذاره

اگر تغییری در کد دادید باید بگید چه تغییری ؛ و اینکه منظورت از insert چیه؟ داری نتیجه سلکت بالا رو insert میکنی یا آپدیت یا فقط از سلکت اجرا میگیری؟

reza4359
چهارشنبه 19 آبان 1395, 08:06 صبح
اگر تغییری در کد دادید باید بگید چه تغییری ؛ و اینکه منظورت از insert چیه؟ داری نتیجه سلکت بالا رو insert میکنی یا آپدیت یا فقط از سلکت اجرا میگیری؟

من فقط کوئری شما را در بالا اجرا کردم بدون هیچ تغییری
من مشکلم با اون کوئری که قبل از این گذاشتید حل شد ممنون
حالا اگه بخوام یک شرط (where ) به این کوئری اضافه کنم باید این شرط را کدوم قسمتش بذارم؟
مثلا اگر فقط بر اساس نام و نام خانوادگی شماره هار رو بیاره یا بر اساس فقط کد ملی یا نام پدر

Mahmoud.Afrad
چهارشنبه 19 آبان 1395, 13:34 عصر
من فقط کوئری شما را در بالا اجرا کردم بدون هیچ تغییری
من مشکلم با اون کوئری که قبل از این گذاشتید حل شد ممنون
حالا اگه بخوام یک شرط (where ) به این کوئری اضافه کنم باید این شرط را کدوم قسمتش بذارم؟
مثلا اگر فقط بر اساس نام و نام خانوادگی شماره هار رو بیاره یا بر اساس فقط کد ملی یا نام پدر

بعد از join میتونید شرط اعمال کنید

select ...
from ...
join ...
on ....
where ...

reza4359
چهارشنبه 19 آبان 1395, 15:23 عصر
بعد از join میتونید شرط اعمال کنید

select ...
from ...
join ...
on ....
where ...
من میخوام این شرط را اعمال کنم خطا میده
مقایسه فقط نام و نام خانوادگی یعنی بیاد فقط بر اساس مام و نام خانوادگی جستجو کنه

where (tbl_tel.name=tbl_ic.name) and (tbl_tel.lname=tbl_ic.lname)

Mahmoud.Afrad
چهارشنبه 19 آبان 1395, 15:46 عصر
من میخوام این شرط را اعمال کنم خطا میده
مقایسه فقط نام و نام خانوادگی یعنی بیاد فقط بر اساس مام و نام خانوادگی جستجو کنه

where (tbl_tel.name=tbl_ic.name) and (tbl_tel.lname=tbl_ic.lname)

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

reza4359
چهارشنبه 19 آبان 1395, 16:19 عصر
فکر کتم منظورت شرط join هست درسته؟ کد ملی مولفه بهتری برای join هست چون هر کس کد ملی منحصر به فردی داره. چرا به این شرط نیاز داری؟ مگر کد ملی در هر دو جدول وجود نداره؟

میخوام بر اساس تک تک فیلدهای دو جدول جستجو و مقایسه کنه
من یه جستجوی کلی دارم که اون رو با کد ملی انجام میدم
و یک جستجوی مقایسه ای با تک تک فیلد ها مثلا نام و نام خانوادگی یا نام پدر یا شماره شناسنامه
حالا جستجوی کلی مشکلی نداره از join کد ملی استفاده میکنم حالا برای مقایسه با نام خانوادگی باید شرطم را کجا قرار بدم؟
بعد از join قرار دادم به نام و نام خانوادگی خطا میده که اینها وجود ندارند باید جدول tbl_tel را کجا براش تعریف کنم
مهندس افراد یک مشکل دیگه هم هست که این اطلاعات که با اکسل وارد میشه ممکنه فردی کد ملی نداشته باشه اونوقت کلید خارجی کد ملی چی میشه؟
تکلیف چیه؟ بر چه اساسی جستجو و مقایسه صورت میگیره؟

Mahmoud.Afrad
چهارشنبه 19 آبان 1395, 16:22 عصر
میخوام بر اساس تک تک فیلدهای دو جدول جستجو و مقایسه کنه
من یه جستجوی کلی دارم که اون رو با کد ملی انجام میدم
و یک جستجوی مقایسه ای با تک تک فیلد ها مثلا نام و نام خانوادگی یا نام پدر یا شماره شناسنامه
حالا جستجوی کلی مشکلی نئاره از join کد ملی استفاده میکنم حالا برای مقایسه با نام خانوادگی باید شرطم را کجا قرار بدم؟
بعد از join قرار دادم به نام و نام خانوادگی خطا میده که اینها وجود ندارند باید جدول tbl_tel را کجا براش تعریف کنم

یعنی میخواهید مثلا با گرفتن نام و نام خانوادگی یا ... اطلاعات شخص رو همراه شماره تلفنهاش رو جستجو کنید؟ چیزی شبیه جستجوی پیشرفته.

reza4359
چهارشنبه 19 آبان 1395, 16:31 عصر
یعنی میخواهید مثلا با گرفتن نام و نام خانوادگی یا ... اطلاعات شخص رو همراه شماره تلفنهاش رو جستجو کنید؟ چیزی شبیه جستجوی پیشرفته.

آره مهندس اطلاعات دو جدول که از طریق اکسل وارد دیتابیس میشه تعداد فیلد هاش یکسانه
میخوام اگه مثلا بر اساس کد ملی چک کرد و کد ملی نداشت بره سراغ نام خانوادگی و اگه نداشت نام پدر یا شماره شناسنامه و..
من چند تا check box گذاشتم به اسم نام و نام خانوادگی ، نام پدر ، کد ملی و..
میخوام ترکیب هر کدوم را زدم (یعنی مثلا نام و نام خانوادگی ) بر اون اساس جستجو کنه

Mahmoud.Afrad
چهارشنبه 19 آبان 1395, 16:53 عصر
http://barnamenevis.org/showthread.php?343579-%D8%AC%D8%B3%D8%AA%D8%AC%D9%88%DB%8C-%D9%BE%DB%8C%D8%B4%D8%B1%D9%81%D8%AA%D9%87-%D8%AF%D8%B1-Database
http://barnamenevis.org/showthread.php?340305-%D8%AC%D8%B3%D8%AA%D8%AC%D9%88%DB%8C-%D9%BE%DB%8C%D8%B4%D8%B1%D9%81%D8%AA%D9%87-%D8%AA%D9%88%D8%B3%D8%B7-%D8%A7%D8%B3%D8%AA%D9%88%D8%B1%D9%BE%D8%B1%D9%88%D 8%B3%DB%8C%D8%AC%D8%B1-stored-procedure

reza4359
چهارشنبه 19 آبان 1395, 22:46 عصر
آقای افراد من الان مشکلم اینه که وقتی میخوام بعد از join یه شرط بذارم و فیلد tbl_tel.name یا tbl_tel.lname را بذارم برای شرط نام و نام خانوادگی جدول tbl_tel را نمیشناسه و میگه اینا وجود ندارن
چکار کنم که فیلد های جدول tbl_tel را هم مثل جدول tbl_ic بشناسه
هر کاری کردم نشد
این پیغام را میده

{"Column name or number of supplied values does not match table definition."}