SQL加入2个表并替换字段

时间:2016-03-03 12:47:11

标签: sql postgresql

我有一个问题,向你们展示,我把它分解成一个小例子。 为了扩大现实,我们假设客户的生日每天都在变化。 有2个表,一个表包含客户,另一个表包含星号。

**click here to see the tables.**

(日期格式:DD-MM-YYYY, dateofbirth数据类型为varchar

我想匹配两个表的日期,以创建包含客户和相应星座的视图,例如:**<code>ViewCustomerStarsigns</code>**

我尝试使用通配符,连接等,但我没有得到它。我慢慢失去了这种普遍可能的信念,但在放弃之前,我问你们。希望你能帮帮我。

2 个答案:

答案 0 :(得分:1)

好吧......我会给你一个SELECT语句,这应该足够了。

你需要:

  • 查看所有客户
  • 将他们与基于birthmonth的标志配对

这要求你将他们的生日(或开始)投射到&#34; date&#34;键入,然后提取月份。完成此操作后,您可以根据month = signid(或签署月份或其他)加入表格。

Up to date SQL Fiddle to cast from varchar to date
OldSQLFiddle:--ignore--

请注意,我只为每张桌子使用了一个条目,以使我的生活更轻松并证明这一概念。

我的加入声明在这里:

SELECT c.last_name, c.first_name, c.birth_date, s.sign_name
FROM customers c
JOIN signs s ON s.sign_id = 
    date_part('month', to_date(c.birth_date,'DD.MM.YYYY'))

如果有任何不清楚的地方,请告诉我。

此外:this link可以帮助您完成所需的任何日期格式设置。

答案 1 :(得分:0)

所以我想通了: 我扩展了表格“Starsigns”:

date       | starsign  |
-----------+-----------+
01.01.1956 | capricorn |
-----------+-----------+
02.01.1956 | capricorn |
-----------+-----------+
03.01.1956 | capricorn |
-----------+-----------+
" " " " " " " " " " " "
-----------+-----------+
15.12.1988 |Sagittarius|
-----------+-----------+

然后我简单地加入了两个表:

SELECT * FROM Customers
Join Starsigns on Starsigns.date = Customers.dateofbirth
相关问题