2016-09-15 16 views
6

Tôi có 3 bảng mysql (thứ tự, trại, người sử dụng) giá trị như dưới đây,mysql nhận được 2 hồ sơ cuối cùng của bảng với 3 bảng

order_table 
ID camp_id  orderDate  message 
1  1   2015-01-01  ok 
2  1   2015-02-01  ok 
3  2   2015-03-01  not ok 
4  3   2015-01-01  not ok 
5  1   2015-04-01  not ok 
6  2   2015-01-01  ok 
7  3   2015-07-01  not ok 

camp_table 
camp_id camp_uid  camp name 
1  10    first camp 
2  11    second camp 
3  12    third camp 
4  10    forth camp 

user_table 
uid uname 
10  abc 
11  xyz 
12  wrt 

tôi muốn có quả như dưới đây

uname,camp name,message 

cho 2 hồ sơ cuối cùng của mỗi người dùng từ order_table cho hôm nay đặt hàng theo orderDate

Tôi muốn tham gia bảng se có uname từ user_tabletrại nam e từ camp_tablenhắn từ order_table. cho nay trật tự bởi OrderDate Cảm ơn

+0

Vui lòng chỉnh sửa và giải thích câu hỏi của bạn chi tiết hơn. – FluxCoder

+0

bạn muốn có 2 bản ghi cuối cùng chỉ từ câu chuyện đặt hàng và bạn muốn chúng tôi tham gia? –

+0

Xem http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sql- truy vấn – Strawberry

Trả lời

2
SELECT 
    u.uname, 
    ct.camp_name, 
    ot.message 
FROM 
    (
     SELECT 
      * 
     FROM 
      order_table o1 
     WHERE 
      (
       SELECT 
        COUNT(*) 
       FROM 
        order_table o2 
       WHERE 
        o1.camp_id = o2.camp_id 
       AND o2.ID >= o1.ID 
      ) <= 2 
    ) ot 
INNER JOIN camp_table ct ON ct.camp_id = ot.camp_id 
INNER JOIN user_table u ON ct.camp_uid = u.uid 
ORDER BY 
    u.uname 
+0

Xin chào, đây là truy vấn vô tận và mysql bị kẹt –

+0

nó hoạt động trên hệ thống của tôi, với các giá trị cơ sở dữ liệu trong câu hỏi của bạn. –

+0

Có @ShoyebSheikh, đối với tôi, truy vấn của bạn cũng hoạt động –

-3

sử dụng sau đây truy vấn sql

"select uname, camp name, message from (order join camp on order.camp_id = camp.camp_id) join user on and camp.camp_uid = user.uid order by order.orderdate desc limit 2" 

Hy vọng nó giúp.

+0

bạn nên sử dụng tham gia thay vì nơi liên kết các bảng –

+0

Có! Đúng rồi. Tôi chỉ đề cập đến cách đơn giản chết tiệt để làm điều đó –

+0

"cách đơn giản chết tiệt" là một kiểu cũ không được sử dụng, chỉ để bạn biết :) –

3
Select 
ct.camp_name, 
ut.uname, 
ot.message FROM order_table as ot 
LEFT JOIN camp_table as ct on ot.camp_id = ct.camp_id 
LEFT JOIN user_table as ut on ct.camp_uid = ut.uid 
order by ot.id desc 
limit 2 
+0

Cảm ơn bạn đã trả lời Không, nó không phải thứ tôi muốn, tôi muốn có 2 hồ sơ của mỗi khách hàng nhưng ngày hôm nay. đây là chỉ hiển thị 2 hồ sơ cuối cùng –

1

Sắp xếp theo ngày và tham gia cả hai bảng.

Select t1.camp_name, t2.uname,t3.message FROM order_table as t3 
    LEFT JOIN camp_table as t1 on t3.camp_id = t1.camp_id 
    LEFT JOIN user_table as t2 on t1.camp_uid = t2.uid 
    order by t3.orderDate desc 
    limit 2 
Các vấn đề liên quan