多表SQL交叉引用搜索难度

时间:2014-12-13 04:22:02

标签: php mysql sql search

我的数据库中有三个表; WORKER_DETAIL,STORE_WORKER和STORE_NAME。每个表的条目包括:

对于WORKER_DETAIL(4个字段=工人序列号,姓名,生日,性别):

  

WSN名称生日性别

     

001 John 1/1/1964男

     

002 Dave 2/2/1980男

     

003 Jane 3/3/1975女性

对于STORE_NAME(3个字段=商店序列号,商店名称,城市)

  

SSN名称城市

     

001 StoreA Los Angeles

     

002 StoreB San Francisco

     <00> 003 StoreC Miami

和最后一个表STORE_WORKER将两者结合在一起(3个字段= WSN,SSN,Pay)

  

WSN SSN支付

     

001 001 $ 50(约翰,在StoreA工作,获得50美元的报酬)

     <00> 003 001 $ 40(Jane,在StoreA工作,获得40美元的报酬)

     <00> 002 003 $ 60(Dave,在StoreC工作,获得60美元的报酬)

我目前正在制作一个搜索表单,允许用户输入Worker的名称。然后搜索表单将获取输入名称,将其与相应的WSN匹配,获取WSN并将其与相应的SSN匹配,获取SSN,然后将其与相应的Store Name和City匹配,然后输出该信息(The Store) STORE_NAME表中的名称和城市。)

但我不确定如何以SQL语句的形式执行此操作。根据我的理解,SQL语法涉及JOIN或UNION,但我不确定如何去做。

2 个答案:

答案 0 :(得分:0)

您想要的查询是表的连接:

select w.wsn, ssn.name, ssn.city
from store_worker sw join
     worker_detail w
     on sw.wsn = w.wsn join
     store_name s
     on sw.ssn = s.ssn
where w.name = $WORKERNAME;

where子句将工作者名称与输入工作者名称进行比较。

答案 1 :(得分:0)

select sn.Name, sn.City from WORKER_DETAIL wd 
  join STORE_WORKER sw on wd.WSN=sw.WSN join STORE_NAME sn on sw.SSN=sn.SSN
where wd.Name like '%Worker_name%'