0

私は最終的に仕事を始めたこの長いクエリを持っていますが、ORDER BY date_time_addedテーブルを除くすべてのテーブルにあるフィールドである. 正しく動作させるにはどうすればよいですか?user_accountsrelationships

$sql = "select distinct pb.user_id, pb.Full_name,
tv.why_onsite3, tv.onsite3_id, tv.other_date as onsite3_date, 
tv.user_allowed as tv_user_allowed, np.onsite4_name ,  
np.onsite4_id, np.other_date as onsite4_date, np.user_allowed 
as np_user_allowed, pml.med_name , pml.med_id, pml.other_date 
as pml_date, pml.user_allowed as pml_user_allowed, pl.onsite5_name,
pl.onsite5_test_id, pl.other_date as some_stats_date, pl.user_allowed as   
pl_user_allowed, chlp.problem_name_is , chlp.current_problem_id, 
chlp.other_date as chlp_date, chlp.user_allowed as chlp_user_allowed,
pphl.onsite10_health_prob_id , pphl.onsite10_problem_name_is, 
pphl.other_date as pphl_date, pphl.user_allowed as pphl_user_allowed,
al.onsite_id , al.onsite_name, al.other_date as onsite_date, 
al.user_allowed as al_user_allowed, sl.onsite2_id , sl.onsite2_name, 
sl.other_date as onsite2_date, sl.user_allowed as sl_user_allowed,
hal.onsite6_id , hal.reason_for_admit, hal.other_date as hal_date, 
hal.user_allowed as hal_user_allowed, il.onsite9_id , il.onsite9_name, 
il.other_date as il_date , il.user_allowed as il_user_allowed
from user_accounts pb left join some_stuff tv on pb.user_id = tv.user_id
left join some_onsite4s np on pb.user_id = np.user_id
left join some_med pml on pb.user_id = pml.user_id
left join list_hal hal on pb.user_id = hal.user_id
left join list_for_things il on pb.user_id = il.user_id
left join list_on  sl on pb.user_id = sl.user_id
left join some_all al on pb.user_id = al.user_id
left join some_list  pphl on pb.user_id = pphl.user_id
left join some_stats pl on pb.user_id = pl.user_id
left join some_probs chlp on pb.user_id = chlp.user_id

where (pb.user_id in (select fb.friend_id from relationships fb 
where fb.user_id = '$uid')
or pb.user_id in (select fb1.user_id from relationships fb1 
where fb1.friend_id = '$uid')
)

group by pb.user_id ORDER BY date_time_added DESC LIMIT $startrow, 20";
4

1 に答える 1

1

ORDER BY 句では、注文する正確な列を指定する必要があります。つまり、複数のテーブルで同じと呼ばれる複数の列があるため、順序付けに使用される列にプレフィックスを付ける必要があります。

その他のオプションは、クエリを完全に再構築し、複数の SELECT ステートメントで UNION 演算子を使用することです。各 SELECT ステートメントは、1 つのテーブルからデータのグループを取得し、そのテーブルの列ごとにそのグループを並べ替えます。

解決策は、出力するデータ (データのコンテキスト) によって異なります。

于 2012-05-14T14:48:00.020 に答える