<div dir="ltr"><div class="gmail_quote"><div>Hello Earl,<br><br>I doubt that would work because I can&#39;t structure any view that would add a filter/argument on the files.filename at all. I&#39;ll explain my view a bit more. The view takes two arguments, content_type/tid. For example news/5,6. I&#39;ve managed to also control the sort using a 3rd argument, so a call would look like news/5,6/latest or news/5,6/most-viewed<br>
<br>The special case I have is in a term that designates a document type, let&#39;s say the term name is &quot;doc&quot; (meaning get the document nodes that have an attachment ending with .doc). So the view here would be document/6,7/latest. 6 would be the tid for document type, and 7 would be a tid for something else from another vocabulary that doesn&#39;t have any special case. Let&#39;s presumably say the query generated was:<br>
<br>SELECT n.nid, n.title FROM node n <br>INNER JOIN term_node tn ON n.nid = tn.nid <br>WHERE n.type = &#39;document&#39; AND tn.tid IN (6,7) <br>ORDER BY n.created DESC<br><br>Now with my special case, the query would need to change to:<br>
<br>SELECT n.nid, n.title FROM node n <br>INNER JOIN term_node tn ON n.nid = tn.nid <br>INNER JOIN content_type_document ctd ON n.nid = ctd.nid <br>INNER JOIN files f ON ctd.field_documet_file_fid = f.fid <br>WHERE n.type = &#39;document&#39; AND tn.tid IN (7) AND f.filename like &#39;%.doc&#39; <br>
ORDER BY n.created DESC<br><br>So I would need to add two more tables to the join, and would need to add a where clause, and remove part of the tid argument (removing 6). I was able to add the join to content_type_document by adding a field from this table to the fields list (although I can&#39;t be sure of the effect this will have on the calls that are for a content type other than document which do not have this field in their cck, but I would think views handles this by doing a LEFT JOIN rather than INNER JOIN as I have presumed in the above example). I hope this clarifies what I&#39;m attempting to do, if I got the approach to this problem totally wrong then any other approach to this is highly appreciated.<br>
<br> </div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">On 10/29/2010 4:18 PM, Ashraf Amayreh wrote:<br>

&gt; Hello all,<br>
&gt;<br>
&gt; I&#39;ve searched the net all over for the particular case I have but<br>
&gt; couldn&#39;t find an answer. I have a view with an argument, based on this<br>
&gt; argument, I would like to either pass it through, or join to two more<br>
&gt; tables and add a where clause to my query that is pretty unrelated to<br>
&gt; the argument type. For example, let&#39;s say the argument is a tid and I<br>
&gt; want to add a where clause to the files table if this tid was equal to<br>
&gt; 5, otherwise, I want it to function normally. For this I looked into the<br>
&gt; hook_views_query_alter hook<br>
&gt;<br>
&gt; The problems I faced in order:<br>
&gt;<br>
&gt; 1. The cck file field that contains the fid was not in the fields list,<br>
&gt; so the table wasn&#39;t even in the joins, I resolved this by adding the cck<br>
&gt; file field to the fields list although I have no use for it. But this at<br>
&gt; least added the table to the view object in this hook (I didn&#39;t really<br>
&gt; want to add a field in vain just to get its table to show up in the<br>
&gt; view-&gt;query object).<br>
&gt; 2. After doing that, I needed to do a join from the table in #1 to the<br>
&gt; files table, again, the files table was not inside the view-&gt;query and<br>
&gt; this is where I got stuck.<br>
&gt; 3. Assuming #2 works, I will finally add a where clause to the files table.<br>
&gt; 4. Let&#39;s say I did all this successfully, I would need to remove the tid<br>
&gt; that was passed in the argument so that it would not be rendered inside<br>
&gt; the query (i.e. where tid = 5).<br>
&gt;<br>
&gt; Is there any guidelines on how to fully handle the view, view-&gt;query<br>
&gt; objects? All I could find were hacks to add sort by, add simple wheres<br>
&gt; to tables that were already in the views object, and to create aliases<br>
&gt; for tables that are, again, already in the view object. None of them<br>
&gt; with the complexity I need.<br>
&gt;<br>
&gt; I&#39;ve hesitated on weather this should be in the views issue queue or<br>
&gt; here, but I think many agree views is no longer an optional module. If I<br>
&gt; do get this resolved I&#39;ll be more than happy to post it on our site or<br>
&gt; to create a views issue with the details.<br>
<br>
Can you accomplish what you want to do with two different views? Create<br>
your own page handler, examine your argument, and pick which display to<br>
use? Or write an access plugin, which is really very rare, which does<br>
this, and let Views pick the display based upon the access status?<br>
</blockquote></div></div>