ارسالها: 28
موضوعها: 6
تاریخ عضویت: تير 1394
اعتبار:
0
تشکرها: 10
0 بار تشکر شده در 0 پست
سلام.
من دو تا تیبل دارم که داخل یکیش مشخصات خرید کاربر ذخیره میشه و داخل یکی دیگش سابقه شارژ حسابش.
که ممکنه بعضی از مواقع یکی از این جدول ها خالی باشه.که دقیقا مشخص نیست که برای هر کاربر کدومش خالیه.
فقط یک فیلد مشترک بین این دوجدول هست.
حالا من میخوام مقادیر این دو تا جدول رو با هم join کنم و بر اساس تاریخ نمایش بدم.
درخواست کمک داشتم.
ممنون
ارسالها: 3,701
موضوعها: 140
تاریخ عضویت: اردیبهشت 1394
اعتبار:
134
تشکرها: 195
3447 بار تشکر شده در 2120 پست
اگه طراحی درست باشه، جدول کاربران نباید برای هیچ خریدی خالی باشه (خرید بدون کاربر نداریم ولی کاربر بدون خرید ممکنه داشته باشیم). اگه اینطوریه، از LEFT JOIN استفاده کنید و جدول سمت چپ رو خریدها انتخاب کنید. مثال:
SELECT * FROM `buys` `b`
LEFT JOIN `users` `u`
ON `b`.`user_id`=`u`.`id`
اینطوری، اگه کاربری خرید نداشته باشه، رکوردش نمیاد و اگه داشته باشه، به ازای تعداد خریدهاش تکرار میشه و جلوی هرکدوم یکی از خریداش میاد.
ارسالها: 3,701
موضوعها: 140
تاریخ عضویت: اردیبهشت 1394
اعتبار:
134
تشکرها: 195
3447 بار تشکر شده در 2120 پست
خوب الان سناریوی شما بنظرم اشتباهه. شما از کجا میدونید که کدوم سابقه شارژ متعلق به کدوم مشخصات خرید هست؟ نمیشه که اینها رو به همدیگه وصل کنیم فقط چون هردو تا فیلد user_id دارن. اون فیلد فقط بدرد وصل کردن اینها به جدول users میخوره نه وصل کردنشون بهم دیگه.
ارسالها: 28
موضوعها: 6
تاریخ عضویت: تير 1394
اعتبار:
0
تشکرها: 10
0 بار تشکر شده در 0 پست
ببخشید من فکر کنم کلا از اول اشتباه توضیح دادم وقت شمارم گرفتم.
نه من اصلا نمیخوام بگم فلان شارژ مال فلان خرید.
من فقط میخوام بگم مثلا امروز کاربر ۱ مبلغ ۳۰۰۰۰ تومان شارژ کرده.و مثلا تاریخ دیروز یک خرید به قیمت ۱۰۰۰۰ تومان داشته.
ولی میخوام این ها رو بر اساس تاریخ نمایش بدم.
ارسالها: 3,701
موضوعها: 140
تاریخ عضویت: اردیبهشت 1394
اعتبار:
134
تشکرها: 195
3447 بار تشکر شده در 2120 پست
خوب اگه اینطوریه، نه باید Join کنید و نه میشه با Union کار کرد چون اسامی و تعداد فیلدها فرق میکنه. باید همه رو جداگانه بخونید و بریزین توی یه آرایه انجمنی و بعد با کمک usort آرایه رو براساس فیلد ts مرتب کنید: