View Full Version : مشکل در بکار بردن having در کوئری
maral_23
دوشنبه 07 مرداد 1392, 11:13 صبح
سلام دوستان
میخوام بدونم در شرطی که جلوی having قرار میگیره چه عبارتی میتونه بکاربرده شه
تا اون جایی من search کردم
به این نتیجه رسیدم که در شرط عبارت سمت چپ میتونه
(یکی از فیلدهایا توابع تجمعی که در select عنوان شده)
میتوان قرار داد و در سمت راست شرط میتونیم
(مقدار ثابت ، فیلد از هر جدولی، یافرمول هایی که در select مشخص می کنیم )
قرار داد
آیا این درسته؟
Salah Sanjabian
دوشنبه 07 مرداد 1392, 13:28 عصر
سلام آره.
SELECT empid, year(orderdate) year, count(*) as Counts
FROM Sales.Orders
WHERE custid = 71
GROUP BY empid, year(orderdate)
HAVING count(*) > 1
یا این
SELECT empid, year(orderdate) year, count(*) as Count
FROM Sales.Orders
WHERE custid = 71
GROUP BY empid, year(orderdate)
HAVING count(*) =(select max(avg) from orders)
محمد سلیم آبادی
دوشنبه 07 مرداد 1392, 14:47 عصر
میخوام بدونم در شرطی که جلوی having قرار میگیره چه عبارتی میتونه بکاربرده شه
نام ستون هایی که در جلوی group by آمده اند.
نام ستون هایی که در group by نیامده اند همراه با توابع تجمعی
مقدار ثابت
عبارات محاسباتی
subquery
...
maral_23
دوشنبه 07 مرداد 1392, 16:41 عصر
ممنون
عبارات محاسباتی ، باید جز عباراتی باشن که جلوی select نوشته شدن یا هر عبارت محاسباتی میتونه باشه؟
محمد سلیم آبادی
دوشنبه 07 مرداد 1392, 22:26 عصر
ممنون
عبارات محاسباتی ، باید جز عباراتی باشن که جلوی select نوشته شدن یا هر عبارت محاسباتی میتونه باشه؟
دقیق متوجه منظورتون نمیشم. این دو هیچ ارتباطی با هم ندارن. having برای فیلتر کردن سطرهایی که گروه بندی شدن بکار میره. و select برای نمایش داده ها مورد نظر این داده ها ستون هایی هستند که در جلوی group by بکار رفتن یا اینکه ستون هایی هستند که به همراه توابع تجمعی بکار میرن...
Salah Sanjabian
سه شنبه 08 مرداد 1392, 12:18 عصر
منظور اینه که آیا میشه در سمت راست عبارت Having ، عبارت محاسباتی به کار برد؟ ربطی به عبارت محاسباتی که در SELECT میاد نداره شما میتونی هر نوع عبارت محاسباتی رو بیاری
SELECT empid, year(orderdate) year, count(*) as Count
FROM Sales.Orders
WHERE custid = 71
GROUP BY empid, year(orderdate)
HAVING count(*) =10*2-2
maral_23
سه شنبه 08 مرداد 1392, 18:02 عصر
آره منظورم اینه اما عبارت محاسباتی رو فیلدها نه اعداد ثابت
محمد سلیم آبادی
پنج شنبه 10 مرداد 1392, 03:17 صبح
آره منظورم اینه اما عبارت محاسباتی رو فیلدها نه اعداد ثابت
بله همه جوره امکان داره.
شما حتی می توانید دو ستون را با عملگر + با هم الحاق کنید و در جلوی group by قرار بدین. یا در ماده having بر اساس یک قسمتی از ستون شرط بگذارید.
SELECT first_name + last_name
FROM table_name
GROUP BY first_name + last_name
HAVING first_name + last_name IN ('m salim', 'mohammad salim');
SELECT
FROM table_name
GROUP BY full_name
HAVING SUBSTRING(full_name, 1, 10) = 'a name';
حالا نوبت ماست، شما دقیقا مشکلتون با having چیه؟
maral_23
جمعه 11 مرداد 1392, 15:43 عصر
بله همه جوره امکان داره.
حالا نوبت ماست، شما دقیقا مشکلتون با having چیه؟
ممنونم
مشکلی با having ندارم
باید اسکریپت نویسی اس کیو ال رو شبیه سازی کنم توی پیاده سازی having یخورده به مشکل خوردم
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.