PDA

View Full Version : دریافت یک مقدار از از بین چند رکورد



saman.1001
سه شنبه 08 فروردین 1396, 11:53 صبح
سلام و عرض ادب
طبق فایل پیوست شده میخواهم به کاربری که دو محصول در یک فاکتور سفارش داده ایمیل بزنم
ستون product_name که دو محصول هست قراره ایمیل بشه به ایمیل کاربر , موجود در ستون ایمیل
ولی اینجور 2 بار ایمیل میره

از دستور group_by در sql استفاده کردم ولی یک رکورد حذف میکنه
میخوام کل همین دو رکورد گرفته بشه , ولی ستون ایمیل که تکراری هست فقط یک مقدار فراخوانی بشه
با تشکر

mohammadrasoul
چهارشنبه 09 فروردین 1396, 01:26 صبح
شما میخوای کل محصولاتی که یک کاربر مثلا علی سفارش داده رو لیست کنی بعد به ایمیل علی یک ایمیل بزنی؟ تا اینجا درست فهمیدیم؟

حالا شما هر کالایی که علی سفارشه میده ایمیلش هم در یک رکورد که اسم کالا هم هست ثبت میشه؟ درسته؟

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

اینجوری

$select_factor=mysql_query("SELECT * FROM `TABAL` WHERE `USER`='ALI' ORDER BY `id` DESC");
$fetch_factor=mysql_fetch_assoc($select_facto);
echo $email=$fetch_factor['email'];

saman.1001
چهارشنبه 09 فروردین 1396, 10:09 صبح
شما میخوای کل محصولاتی که یک کاربر مثلا علی سفارش داده رو لیست کنی بعد به ایمیل علی یک ایمیل بزنی؟ تا اینجا درست فهمیدیم؟
بله دقیقا میخوام محصولاتی که علی در یک فاکتور سفارش داده برام بیارن
اینم کد sql
در نظر بگیرید ستون ایمیل تکراری هست و هر دو محصول علی سفارش داره با یک ایمیل
حالا میخوام دو رکورد بگیرم و تنها یک ایمیل بتونم در خروجی داشته باشم

SELECT
ps_orders.reference , ps_orders.id_order , ps_orders.date_add ,
developer_email_send_comment.code_peygiri_order , developer_email_send_comment.message ,
ps_order_detail.id_order , ps_order_detail.product_name , ps_order_detail.product_id ,
ps_customer.id_customer , ps_customer.lastname , ps_customer.firstname , ps_customer.email
FROM ps_orders

LEFT JOIN developer_email_send_comment
ON ps_orders.reference = developer_email_send_comment.code_peygiri_order

INNER JOIN ps_order_detail
ON ps_orders.id_order = ps_order_detail.id_order

INNER JOIN ps_customer
ON ps_orders.id_customer = ps_customer.id_customer

WHERE developer_email_send_comment.code_peygiri_order IS NULL
AND
Date(ps_orders.date_add) > '2017-02-15 00:00:00'

plague
چهارشنبه 09 فروردین 1396, 14:11 عصر
دیتابیس اینجوری کار نمیکنه
اینکار رو باید با کد نویسی php انجام بدی که البته خیلی سادست
البته به نظر میاد که ساختار دیتابیس شما مشکل داره کلا و درست طراحی نشده
اینجا رو بخون
http://barnamenevis.org/showthread.php?536494-%D8%AC%D8%AF%D8%A7%D9%88%D9%84-%D9%88-%D9%81%DB%8C%D9%84%D8%AF%D9%87%D8%A7%DB%8C-%D8%A7%DB%8C%D9%86-%D8%AF%DB%8C%D8%AA%D8%A7%D8%A8%DB%8C%D8%B3-%D9%88-%D8%A7%D8%B1%D8%AA%D8%A8%D8%A7%D8%AA%D8%B4%D9%88%D 9%86-%D8%A8%D9%87-%DA%86%D9%87-%D8%B5%D9%88%D8%B1%D8%AA-%D9%85%DB%8C-%D8%A8%D8%A7%D8%B4%D8%AF&p=2361928&posted=1#post2361928

saman.1001
چهارشنبه 09 فروردین 1396, 14:27 عصر
دیتابیس پیوست کردم
اینم sql کامل جهت گذارش گیری
SELECT
ps_orders.reference , ps_orders.id_order , ps_orders.date_add ,
ps_order_detail.id_order , ps_order_detail.product_name , ps_order_detail.product_id ,
ps_customer.id_customer , ps_customer.lastname , ps_customer.firstname , ps_customer.email
FROM ps_orders

INNER JOIN ps_order_detail
ON ps_orders.id_order = ps_order_detail.id_order

INNER JOIN ps_customer
ON ps_orders.id_customer = ps_customer.id_customer

میخوام ایمیل یکبار فراخوانی بشه و دو محصول در ستون product_name براش ایمیل بشه
دستور group_by هم میزنم یک رکورد کلا حذف میکنه در گذارش گیری!