ds34222 2016-09-15 00:31
浏览 44
已采纳

从计数匹配不同的请求表格获得两个表mysql php的结果

sorry for my bad english

i tired have problem, i want to matched field in 2 table

table 1

CREATE TABLE `may` (
  `idKEYWORD` int(11) NOT NULL,
  `faku` varchar(45) NOT NULL,
`ipk` varchar(45) NOT NULL,
`per` varchar(45) NOT NULL,
`has` varchar(45) NOT NULL,
`sem` varchar(45) NOT NULL,
`jur` varchar(45) NOT NULL
);

table 2
CREATE TABLE `matched_may` (
`idmayKEYWORD` int(11) NOT NULL,
  `namemay` varchar(50) NOT NULL,
  `req_faku` varchar(50) NOT NULL,
  `req_jur` varchar(50) NOT NULL,
  `req_ipk` varchar(50) NOT NULL,
  `req_perkap` varchar(50) NOT NULL,
  `req_has` varchar(50) NOT NULL,
  `req_sem` varchar(50) NOT NULL

);

in php like this but i need ini mysql because i have so much record i want to use order by total match and use limit

if($red->faku == $res->req_faku OR $res->req_faku == '') $tot[] = 1;
if($red->jur == $res->req_jur OR $res->req_jur == '') $tot[] = 1;
if($red->ipk >= $res->req_ipk OR $res->req_ipk == '') $tot[] = 1;
if($red->per >= $res->req_perkap OR $res->req_perkap == 0) $tot[] = 1;
if($red->has <= $res->req_has OR $res->req_has == 0) $tot[] = 1;
if($red->sem == $res->req_sem OR $res->req_sem == 0) $tot[] = 1;

i need to get 4 or more matched from 6 request

sorry i want to get result like

namemay | matched
name1   | 4
name2   | 5
name3   | 4
  • 写回答

1条回答 默认 最新

  • doudou32012 2016-09-15 00:41
    关注

    If I'm guessing what you want to do, you need to join the tables. Then you can compare the columns from the two tables, and add up the number of matches.

    SELECT namemay, 
        (req_faku = '' OR req_faku = faku) + (req_jur = '' OR req_jur = jur) 
        + (req_ipk = '' OR req_ipk <= ipk) + (req_perkap = 0 OR req_perkap = per)
        + (req_has = 0 OR req_has >= has) + (req_sem = 0 OR req_sem = sem) AS matched
    FROM may
    JOIN matched_may ON idKEYWORD = idmayKEYWORD
    HAVING matched >= 4
    

    Comparison expressions return 1 when they're true, 0 when false, so you can use addition to get the total columns that matches.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试
  • ¥20 问题请教!vue项目关于Nginx配置nonce安全策略的问题
  • ¥15 教务系统账号被盗号如何追溯设备
  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 再不同版本的系统上,TCP传输速度不一致
  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题