我的数据库中的数据类似于代表名称,案件的状态和案件的类型:
名称: new attar
声明: a:2:{i:0;s:13:"Massachusetts";i:1;s:13:"New Hampshire";}
案例类型 a:13:{i:0;s:1:"5";i:1;s:1:"7";i:2;s:1:"8";i:3;s:1:"9";i:4;s:2:"10";i:5;s:2:"11";i:6;s:2:"13";i:7;s:2:"14";i:8;s:2:"15";i:9;s:2:"16";i:10;s:2:"17";i:11;s:2:"18";i:12;s:2:"19";}
名称: Kevin Regan
声明: a:1:{i:0;s:13:"Massachusetts";}
案例类型 a:1:{i:0;s:2:"14";}
名称: Matthew Gendreau
声明: a:2:{i:0;s:13:"Massachusetts";i:1;s:13:"New Hampshire";}
案例类型 a:16:{i:0;s:15:"multiselect-all";i:1;s:1:"5";i:2;s:1:"2";i:3;s:1:"7";i:4;s:1:"8";i:5;s:1:"9";i:6;s:2:"10";i:7;s:2:"11";i:8;s:1:"1";i:9;s:2:"13";i:10;s:2:"14";i:11;s:2:"15";i:12;s:2:"16";i:13;s:2:"17";i:14;s:2:"18";i:15;s:2:"19";}
我使用的查询是:
SELECT
*
FROM
`web_attorney`
WHERE
(
`at_status` = '1'
OR (
`at_status` = '2'
AND '2015-05-15' NOT BETWEEN `at_inactive_date_from`
AND `at_inactive_date_to`
AND `at_inactive_date_from` != ''
AND `at_inactive_date_to` != ''
)
)
AND (
`at_juris_states` LIKE '%Massachusetts%'
)
AND (
`at_availability` LIKE '%Friday%'
)
AND (`at_cases` LIKE '%2%')
ORDER BY
`at_has_mt` ASC
LIMIT 5
问题:
我想仅在cases type like 2
的位置获取记录。
因为我在PHP序列化数组上使用类似,所以查询确实有效,但问题是它始终出现在cases types not 2 and 2
的位置。两者都来自这个查询。
它还挑选了not case type 2
的律师。就像new attar
在qoutes case type 2
中没有"2"
一样,但在他的查询中,当他没有src
时,他就会出现。{/ p>
更新
这是小提琴的例子:
答案 0 :(得分:0)
标准化方法可能如下所示:
attorneys
attorney_id*, name
2 , Kevin Regan
3 , Matthew Gendreau
attorney_state
attorney_id*, state*
2 , Massachusetts
3 , Massachusetts
3 , New Hampshire
attorney_casetype
attorney_id,casetype
2, 14
3, 2
3, 7
3, 8
3, 9
3, 10
3, 11
3, 1
3, 13
3, 14
3, 15
3, 16
3, 17
3, 18
3, 19
*
=(组件)PRIMARY KEY