2011-07-20 68 views
0

我目前有一些表格,我將它們連接在一起,這樣我就可以將所有相關結果形成爲最近活動的新聞源。我遇到的唯一問題是找出哪些表的信息來自。確定結果來自哪個表

$recentActivity = mysql_query(" 
SELECT * 
FROM members 
LEFT JOIN market 
ON members.id = market.user 
LEFT JOIN sales 
ON members.id = sales.uid 
WHERE members.id='$id' 
"); 

我然後運行一個while循環

<? while ($recent = mysql_fetch_assoc($recentActivity)) { ?> 

如果結果在循環來自市場的表,我想能夠呼應「市場」或類似的東西,做如果它來自銷售表,則一樣。

希望這是有道理的。

+0

數據來自連接產生的表。該表的每一列都來自定義良好的源表,但除非我們看到表結構並知道您想知道哪些特定數據,否則沒有什麼可說的。 –

+0

問題沒有意義。 「信息來自哪張表」是什麼意思?結果集通過連接3個表而產生。每行都從這些表的1到3之間獲取信息(因爲您使用了外部聯接 - 您可以通過檢查列是否爲NULL來檢查右側表中是否沒有對應的行)。 – Hammerite

+0

我明白你在說什麼。讓我試着重新舉一個例子。 我有兩個表,銷售和下載。我試圖根據這些表創建一個活動的新聞提要,將這兩個表連接成一個長提要。我遇到的問題是在while循環中告訴它是來自銷售表還是下載表。 – Jako

回答

2

你不能。唯一可能的方法是明確指定所有(必要的)market表字段的別名。像:

SELECT members.*, 
     market.id AS market_id, 
     market.foobar AS market_foobar 

等同樣具有sales

+0

連接表的每一列都來自定義良好的源表。唯一的例外是連接列,在這種情況下,連接的源表在該列中存在相同的數據。 –

0

有這個約定,很多人使用。如果我有一個表,用戶:

-------------------------------- 
| user_username | varchar(20) | 
| user_email  | varchar(40) | 
| user_phone  | varchar(13) | 
--------------------------------- 

這讓你有聯接和知道具體是什麼表中的數據是從哪裏來的。這是一種命名空間。

如果您可以在表中重命名您的字段,我會認真考慮它。