<div dir="ltr">On Mon, Dec 10, 2018 at 7:51 PM David Engel <<a href="mailto:david@istwok.net">david@istwok.net</a>> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Mon, Dec 10, 2018 at 05:59:56PM -0700, John P Poet wrote:<br>
> I would like to set up a "Power Recording Rule" which records all PBS<br>
> movies as long as the genre is NOT Comedy, Historical, Romance or History.<br>
> <br>
> I am able to achieve rejecting one genre with a syntax like this:<br>
> <br>
> channel.callsign LIKE 'PBS%HD' AND program.category_type = 'movie' AND<br>
> 'Comedy' <> ALL (select genre from programgenres where<br>
> program.chanid=programgenres.chanid AND<br>
> program.starttime=programgenres.starttime)<br>
> <br>
> However, that gets ugly real quick, if I want to negate more than one genre:<br>
> <br>
> channel.callsign LIKE 'PBS%HD' AND program.category_type = 'movie' AND<br>
> 'Comedy' <> ALL (select genre from programgenres where<br>
> program.chanid=programgenres.chanid AND<br>
> program.starttime=programgenres.starttime) AND 'Historical' <> ALL (select<br>
> genre from programgenres where program.chanid=programgenres.chanid AND<br>
> program.starttime=programgenres.starttime) AND 'Romance' <> ALL (select<br>
> genre from programgenres where program.chanid=programgenres.chanid AND<br>
> program.starttime=programgenres.starttime) AND 'History' <> ALL (select<br>
> genre from programgenres where program.chanid=programgenres.chanid AND<br>
> program.starttime=programgenres.starttime)<br>
> <br>
> I figured I could put the sub query into a derived table and then just use<br>
> that when doing the "genre <> ALL (results)" but either that does not or I<br>
> have not figured out the syntax.<br>
> <br>
> Anyone have any suggestion?<br>
<br>
I don't have time to work out and test a complete solution but I think<br>
something like this will work.<br>
<br>
For joinging, use<br>
<br>
    join ( select chanid, starttime,<br>
                  group_concat(genre order by genre) allgenres<br>
           from programgenres group by chanid, starttime ) g<br>
         on program.chanid = g.chanid<br>
            and program.starttime = g.starttime<br>
<br>
The subquery will give you results similar to<br>
<br>
+--------+---------------------+-------------------------------------------------------------------------------------------+<br>
| chanid | starttime           | allgenres                                                                                 |<br>
+--------+---------------------+-------------------------------------------------------------------------------------------+<br>
|   6913 | 2018-11-26 00:03:00 | Documentary,Entertainment,Show,Special,tvshow                                             |<br>
|   6260 | 2018-11-26 00:05:00 | Adventure,Children,Episode,series,Series,Show                                             |<br>
|   6760 | 2018-11-26 00:05:00 | Adventure,Children,Episode,series,Series,Show                                             |<br>
|   6901 | 2018-11-26 00:10:00 | Documentary,Episode,Newsmagazine,series,Series,Show                                       |<br>
<br>
For your where clause, use something like<br>
<br>
    NOT g.allgenres REGEXP '(^|,)(Comedy|Historical|Romance|History)(,|$)'<br>
<br>
You'll probably have to fiddle with the regex.  Basically you want the<br>
regex to match on any of the undesired genres preceeded by the<br>
beginning of the string or a comma and succeeded by a comma or the end<br>
of the string.<br>
<br>
David<br></blockquote><div><br></div><div>Thank you, David.   Unfortunately, that JOIN clause does not fit in mythconverg.record.subtitle.  It gets chopped off before the "on program.chanid ...".  <br></div><div><br></div><div>When I try it directly in mysql, it complains "Unknown column 'program.chanid' in 'on clause'".  <br></div><div><br></div><div>It looks like if I want to do this using a "Power Recording Rule" some special support may need to be added to mythbackend to deal with the situation.</div><div><br></div><div><br></div><div>John<br></div></div></div>