我是mysql和数据库的新手,所以我在这里需要帮助......
当唯一给定的变量是ad_id
时,我应该如何使用JOIN从下表中获取记录?
类别和类别选项是手动填写的,即用户不得更改它们。所以他们只是参考表,但我不确定这是我应该怎么做的... 我有6张桌子:
category:
cat_id (PK)
cat_name
category_options:
option_id (PK)
cat_id (FK)
option_name
option_value:
value_id (PK) (AI) // I think this should have Auto Increment
option_id (FK)
classified_id (FK)
value
classified: (THIS IS THE MAIN TABLE YOU COULD SAY)
classified_id (PK) (AI)
ad_id
cat_id
headline
description
area: // I am thinking about moving these fields over to the posters table, right?
area_id (PK)
classified_id (FK)
area
description
以下是我如何在表格中插入分类:
mysql_query("INSERT INTO classified (ad_id, cat_id, headline, description) VALUES ('$ad_id', $cat_id, '$headline', '$description')");
$last_classified_id=mysql_insert_id();
mysql_query("INSERT INTO poster (classified_id, name, email, tel) VALUES ($last_classified_id, '$name', '$email', '$tel')");
mysql_query("INSERT INTO area (classified_id, area, community) VALUES ($last_classified_id, '$area', '$community')");
我是JOIN的新手!
每个类别都有子选项(CARS - >颜色),每个选项都有一个值。 我想,只有拥有ad_id,才能选择所有这些信息。
我该怎么办?
我应该合并区域和海报表吗? 另外,请仔细看看我的数据库,并告诉我是否有任何我可能错过的内容......
这真的是出于我的知识基础,所以我们非常感谢您的详细解释!
由于
答案 0 :(得分:0)
看起来你有两个字段可能是分类中的主键:classified_id和ad_id。然后你有另外两个表,海报和区域,与分类有一对一的关联。如果是这种情况,您可以将所有字段都归类为分类。
在insert语句中加入表的查询如下:
select
classified.ad_id,
classified.classified_id,
classified.headline,
classified.description AS classified_description,
poster.name,
poster.email,
poster.tel,
area.area,
area.description AS area_description from
classified inner join
poster
on
classified.ad_id = poster.classified_id inner join
area
on
classified.classified_id where
classified.ad_id = 123
答案 1 :(得分:0)
这是一个连接某些表以从多个表中获取数据的示例:
SELECT c.cat_name, co.option_name, cl.headline
FROM category c
INNER JOIN category_options co ON co.cat_id = c.cat_id
INNER JOIN classified cl ON cl.cat_id = c.cat_id
WHERE cl.ad_id = {Your ad_id}
您可以以相同的方式加入所需的任何其他表格(海报,区域)。
编辑(对评论的回应):'c','cl'和'co'是'category','classified'和'category_option'表的别名。它们与连接没有任何关系。 Here是一个来源。当我说FROM category c
时,允许我使用'c'作为类别表的快捷方式。使用别名允许你如何做select / join / where子句,而不是像这样:
SELECT category.cat_name, category_options.option_name, classified.headline
FROM category
INNER JOIN category_options ON category_options.cat_id = category.cat_id
INNER JOIN classified ON classified.cat_id = category.cat_id
WHERE classified.ad_id = {Your ad_id}
基本上它是一种可以节省一些打字的快捷方式。