簡體   English   中英

SQL JOIN獲取名稱和項目的所有標簽

[英]SQL JOIN get name and all tags for item

這是我的第一個JOIN子句,確實遇到了問題。 我想回顯我的商品的所有必要信息,但是我不了解如何回顯某個商品的所有標簽,現在我會得到一個列表,其中包含重復的商品,但如果為一個商品分配了多個標簽,則具有不同的商品標簽項目。 有任何想法嗎? 更好地做到這一點的方法也受到高度贊賞。

$query = "SELECT categories.id, categories.category, spots.spot_name, spots.category_id, spots.description, spots.slug, districts.id, districts.district, tags.spot_id, tags.tag ".
 "FROM categories, spots, districts, tags ".
    "WHERE categories.id = spots.category_id AND districts.id = spots.district_id AND tags.spot_id = spots.id";

$result = mysql_query($query);
if (!$result) {
  die('Invalid query: ' . mysql_error());
}

while ($row = @mysql_fetch_array($result)){
echo '<tr><td style="background:#000; color:#ccc;" class="tooltip" title="'.$row["description"].'Tags: '.$row["tag"].'"><a style="color:#fff;" href="/'.$row["slug"].'">'.$row["spot_name"].'</a></td>
<td>'.$row["category"].'</td>
<td>'.$row["district"].'</td>
<td>****</td>
</tr>  
';
}

太感謝了,

安德斯

更改查詢並添加左聯接,如下所示:$ query =“ SELECT c.id,c.category,s.spot_name,s.category_id,s.description”。 “ s.slug,d.id,d.district,t.spot_id,t.tag”。 “來自類別AS c,地點AS s,區域AS d”。 “在t.spot_id為t ON時加入標簽”。 “在哪里c.id = s.category_id和d.id = s.district_id”;

這是查詢看起來更好看的樣子:

SELECT c.id, c.category, s.spot_name, s.category_id, s.description, s.slug, d.id, d.district, t.spot_id, t.tag 
  FROM spots AS s
  LEFT JOIN categories AS c ON c.id = s.category_id
  LEFT JOIN districts AS d ON d.id = s.district_id
  LEFT JOIN tags AS t ON t.spot_id = s.id

要獲得所有位置,您要發出此查詢:

SELECT c.id, c.category, s.spot_name, s.category_id, s.description, s.slug, d.id, d.district
  FROM spots AS s
  LEFT JOIN categories AS c ON c.id = s.category_id
  LEFT JOIN districts AS d ON d.id = s.district_id

現在,您可以遍歷所有地點並獲取其標簽:

'SELECT t.tag FROM tags WHERE t.spot_id = '. (int)$spot_id

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM