Обсуждение: select with multiple occurences in same table

Поиск
Список
Период
Сортировка

select with multiple occurences in same table

От
"William Herring"
Дата:
<div class="Section1"><p class="MsoNormal"><span class="EmailStyle15"><font color="black" face="Arial" size="2"><span
style="font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:
Arial"><span style="mso-spacerun: yes">      </span>Table "inventorytrack"</span></font></span><p
class="MsoNormal"><spanclass="EmailStyle15"><font color="black" face="Arial" size="2"><span
style="font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:
Arial"><span style="mso-spacerun: yes"> </span>Attribute<span style="mso-spacerun: yes">  </span>|<span
style="mso-spacerun:
yes">   </span>Type<span style="mso-spacerun: yes">    </span>| Modifier</span></font></span><p class="MsoNormal"><span
class="EmailStyle15"><fontcolor="black" face="Arial" size="2"><span
style="font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:
Arial">------------+-----------+----------</span></font></span><p class="MsoNormal"><span class="EmailStyle15"><font
color="black"face="Arial" size="2"><span style="font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family: 
Arial"><span style="mso-spacerun: yes"> </span>tattoo<span style="mso-spacerun: yes">     </span>| text<span
style="mso-spacerun:yes">      </span>|</span></font></span><p class="MsoNormal"><span class="EmailStyle15"><font
color="black"face="Arial" size="2"><span style="font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family: 
Arial"><span style="mso-spacerun: yes"> </span>past_group | text<span style="mso-spacerun: yes">     
</span>|</span></font></span><pclass="MsoNormal"><span class="EmailStyle15"><font color="black" face="Arial"
size="2"><spanstyle="font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family: 
Arial"><span style="mso-spacerun: yes"> </span>ranch<span style="mso-spacerun: yes">      </span>| text<span
style="mso-spacerun:yes">      </span>|</span></font></span><p class="MsoNormal"><span class="EmailStyle15"><font
color="black"face="Arial" size="2"><span style="font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family: 
Arial"><span style="mso-spacerun: yes"> </span>ent_date<span style="mso-spacerun: yes">   </span>| timestamp
|</span></font></span><pclass="MsoNormal"><span class="EmailStyle15"><font color="black" face="Arial" size="2"><span
style="font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:
Arial"><span style="mso-spacerun: yes"> </span>indate<span style="mso-spacerun: yes">     </span>| date<span
style="mso-spacerun:yes">      </span>|</span></font></span><p class="MsoNormal"><span class="EmailStyle15"><font
color="black"face="Arial" size="2"><span style="font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family: 
Arial"> </span></font></span><p class="MsoNormal"><span class="EmailStyle15"><font color="black" face="Arial"
size="2"><spanstyle="font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family: 
Arial"> </span></font></span><p class="MsoNormal"><span class="EmailStyle15"><font color="black" face="Arial"
size="2"><spanstyle="font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family: 
Arial">In the above table, I have multiple occurrences of ‘tattoo’.<span style="mso-spacerun: yes">  </span>However,
someof the tattoo’s have null value in ‘indate’, some do not.<span style="mso-spacerun: yes">  </span>I would like to
selectthose tattoos with a null indate, unless there is another identical tattoo in the table that has<span
style="mso-spacerun:yes">  </span>a date value in <span style="mso-spacerun: yes"> </span>‘indate’.<span
style="mso-spacerun:yes">  </span>For example, I might have:</span></font></span><p class="MsoNormal"><span
class="EmailStyle15"><fontcolor="black" face="Arial" size="2"><span
style="font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:
Arial"> </span></font></span><p class="MsoNormal"><span class="EmailStyle15"><font color="black" face="Arial"
size="2"><spanstyle="font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family: 
Arial">tattoo |<span style="mso-spacerun: yes">   </span>past_group<span style="mso-spacerun: yes">   </span>|
ranch<spanstyle="mso-spacerun: yes">  </span>|<span style="mso-spacerun: 
yes">        </span>ent_date<span style="mso-spacerun: yes">        </span>|<span style="mso-spacerun: yes">  
</span>indate</span></font></span><pclass="MsoNormal"><span class="EmailStyle15"><font color="black" face="Arial"
size="2"><spanstyle="font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family: 
Arial">--------+----------------+--------+------------------------+------------</span></font></span><p
class="MsoNormal"><spanclass="EmailStyle15"><font color="black" face="Arial" size="2"><span
style="font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:
Arial"><span style="mso-spacerun: yes"> </span>1039<span style="mso-spacerun: yes">   </span>| Barn2/Behind<span
style="mso-spacerun:yes">   </span>| Iberia | 2000-03-16 11:03:32-08 |</span></font></span><p class="MsoNormal"><span
class="EmailStyle15"><fontcolor="black" face="Arial" size="2"><span
style="font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:
Arial"><span style="mso-spacerun: yes"> </span>1039<span style="mso-spacerun: yes">   </span>| Across/Bubs<span
style="mso-spacerun:yes">    </span>| Iberia | 2000-12-28 14:57:13-08 | 2000-12-28</span></font></span><p
class="MsoNormal"><spanclass="EmailStyle15"><font color="black" face="Arial" size="2"><span
style="font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:
Arial"><span style="mso-spacerun: yes"> </span>1832<span style="mso-spacerun: yes">   </span>| GardnerBlock#3 | Iberia
|2000-03-16 11:03:32-08 |</span></font></span><p class="MsoNormal"
style="margin-left:33.6pt;text-indent:-30.6pt;mso-list:l0level1 lfo2; 
tab-stops:list 33.6pt"><span class="EmailStyle15"><font color="black" face="Arial" size="2"><span
style="font-size:10.0pt;mso-bidi-font-size:
12.0pt;font-family:Arial">1832<font face="Times New Roman" size="1"><span style="font:7.0pt "Times New Roman"">    
</span></font></span></font></span><spanclass="EmailStyle15"><font color="black" face="Arial" size="2"><span
style="font-size:
10.0pt;mso-bidi-font-size:12.0pt;font-family:Arial">| GardnerBlock#2 | Iberia | 2000-12-28 12:46:57-08 | 2000-12-28
</span></font></span><pclass="MsoNormal" style="margin-left:33.6pt;text-indent:-30.6pt;mso-list:l0 level1 lfo2; 
tab-stops:list 33.6pt"><span class="EmailStyle15"><font color="black" face="Arial" size="2"><span
style="font-size:10.0pt;mso-bidi-font-size:
12.0pt;font-family:Arial">1833<font face="Times New Roman" size="1"><span style="font:7.0pt "Times New Roman"">    
</span></font></span></font></span><spanclass="EmailStyle15"><font color="black" face="Arial" size="2"><span
style="font-size:
10.0pt;mso-bidi-font-size:12.0pt;font-family:Arial">| Becker1<span style="mso-spacerun:
yes">            </span>| Iberia | 2000-03-16 11:03:32-08 |</span></font></span><p class="MsoNormal"
style="margin-left:3.0pt"><spanclass="EmailStyle15"><font color="black" face="Arial" size="2"><span
style="font-size:10.0pt;mso-bidi-font-size:
12.0pt;font-family:Arial"> </span></font></span><p class="MsoNormal"><span class="EmailStyle15"><font color="black"
face="Arial"size="2"><span style="font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family: 
Arial"> </span></font></span><p class="MsoNormal"><span class="EmailStyle15"><font color="black" face="Arial"
size="2"><spanstyle="font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family: 
Arial"> </span></font></span><p class="MsoNormal"><span class="EmailStyle15"><font color="black" face="Arial"
size="2"><spanstyle="font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family: 
Arial"> </span></font></span><p class="MsoNormal"><span class="EmailStyle15"><font color="black" face="Arial"
size="2"><spanstyle="font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family: 
Arial">So the prospective SELECT would give back:</span></font></span><p class="MsoNormal"><span
class="EmailStyle15"><fontcolor="black" face="Arial" size="2"><span
style="font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:
Arial"> </span></font></span><p class="MsoNormal"><span class="EmailStyle15"><font color="black" face="Arial"
size="2"><spanstyle="font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family: 
Arial">tattoo |<span style="mso-spacerun: yes">   </span>past_group<span style="mso-spacerun: yes">   </span>|
ranch<spanstyle="mso-spacerun: yes">  </span>|<span style="mso-spacerun: 
yes">        </span>ent_date<span style="mso-spacerun: yes">        </span>|<span style="mso-spacerun: yes">  
</span>indate</span></font></span><pclass="MsoNormal"><span class="EmailStyle15"><font color="black" face="Arial"
size="2"><spanstyle="font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family: 
Arial">1039<span style="mso-spacerun: yes">   </span>| Across/Bubs<span style="mso-spacerun: yes">    </span>| Iberia |
2000-12-2814:57:13-08 | 2000-12-28</span></font></span><p class="MsoNormal"><span class="EmailStyle15"><font
color="black"face="Arial" size="2"><span style="font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family: 
Arial">1832| GardnerBlock#2 | Iberia | 2000-12-28 12:46:57-08 | 2000-12-28</span></font></span><p class="MsoNormal"
style="margin-left:3.0pt"><spanclass="EmailStyle15"><font color="black" face="Arial" size="2"><span
style="font-size:10.0pt;mso-bidi-font-size:
12.0pt;font-family:Arial">1833| Becker1<span style="mso-spacerun:
yes">            </span>| Iberia | 2000-03-16 11:03:32-08 |</span></font></span><p class="MsoNormal"><span
class="EmailStyle15"><fontcolor="black" face="Arial" size="2"><span
style="font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:
Arial"> </span></font></span><p class="MsoNormal"><span class="EmailStyle15"><font color="black" face="Arial"
size="2"><spanstyle="font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family: 
Arial">Any suggestions on how to do this?</span></font></span></div>

Re: select with multiple occurences in same table

От
"Josh Berkus"
Дата:
WIlliam,

>       Table "inventorytrack"
>  Attribute  |   Type    | Modifier
> ------------+-----------+----------
>  tattoo     | text      |
>  past_group | text      |
>  ranch      | text      |
>  ent_date   | timestamp |
>  indate     | date      |
> 

Are you sure that you're using the most efficient data types for this
table?  And where's your primary key?


> In the above table, I have multiple occurrences of ‘tattoo’.
> However, some
> of the tattoo’s have null value in ‘indate’, some do not.  I would
> like to
> select those tattoos with a null indate, unless there is another
> identical
> tattoo in the table that has  a date value in  ‘indate’.

THis one is easy.  However, I'm not sure exactly waht you want; the
sample return tuples you provided do not match what you asked for!

If you wanted to answer the question above:

SELECT * FROM inventorytrack
WHERE indate IS NULL
AND NOT EXISTS (SELECT tattoo FROM inventorytrack it2WHERE it2.tattoo = inventorytrack.tattoo    AND indate IS NOT NULL
);

-Josh Berkus



______AGLIO DATABASE SOLUTIONS___________________________                                      Josh Berkus Complete
informationtechnology      josh@agliodbs.com  and data management solutions       (415) 565-7293 for law firms, small
businesses       fax 621-2533   and non-profit organizations.      San Francisco
 


pl/pgSQL and escaping LIKE clauses

От
"Robby Slaughter"
Дата:
I'm having trouble getting LIKE clauses to work correctly inside a plpgSQL
function.

Here's my table:

 id |  val
----+-------------
  1 | hello
  2 | there
  3 | everyone


Here's my function:

CREATE FUNCTION intable(char)
RETURNS INTEGER
AS
'
DECLARE
  input ALIAS FOR $1;
  temp  INTEGER;
BEGIN
  SELECT INTO temp id FROM test WHERE val LIKE ''input%'';
  RAISE NOTICE ''Value of temp is %'',temp;
  RETURN temp;
END;
'
LANGUAGE 'plpgsql';

I should be able to SELECT('hello') and get back 1, correct?

No matter what I put in as a parameter, it always returns null.

If I change the LIKE clause to read "...LIKE ''hello%''" it does
in fact work. Or if I scrap the LIKE clause and have it
read something such as ".... id = input" (if input is an integer)
it also works fine.

Any thoughts?

Thanks,
Robby