如果總是會有對應於social_members
,或者有一個對應關係,那麼你可以使用INNER JOIN你只排一個感興趣social_mcouple
。如果你需要所有的社交成員,不管是否有相應的social_mcouple
,那麼你將需要一個左連接。 LEFT JOIN
將爲您提供social_mcouple.*
設置爲NULL
的所有行不匹配的行。
性能命中率將取決於數據集的大小。
編輯:添加一個示例UNION查詢。
$res = @mysql_query("
(SELECT social_members.*, social_member_types.*, DATE_FORMAT(m_lld,'%m/%d/%y') AS m_lld_formatted,
NULL AS mcouple1, NULL AS mcouple2, NULL AS mcouple3
FROM social_members
LEFT JOIN social_member_types ON t_id=m_type
WHERE m_user='".$en['user']."' AND m_type != 2)
UNION
(SELECT social_members.*, social_member_types.*, DATE_FORMAT(m_lld,'%m/%d/%y') AS m_lld_formatted,
social_mcouple.mcouple1, social_mcouple.mcouple2, social_mcouple.mcouple3
FROM social_members
LEFT JOIN social_member_types ON t_id=m_type
JOIN social_mcouple ON social_members.m_id = social_mcouple.c_id
WHERE m_user='".$en['user']."' AND m_type = 2)
");
提示!使用通用的日期標準;)http://en.wikipedia.org/wiki/ISO_8601 – 2010-04-21 16:49:27
我不知道我關注 - 你想從另一個表的字段,但你不想將表添加到查詢? – thetaiko 2010-04-21 16:52:39
我想知道是否可以在沒有LEFT JOIN的情況下添加social_mcouple我總是被告知,如果使用了錯誤的方式,左連接會降低服務器的速度。因爲從長遠來看,我已經可以添加一個沒有性能問題的第二個問題了? – acctman 2010-04-21 17:41:45