SQL joining from list of values to match single value?

Bob Sneidar bobsneidar at iotecdigital.com
Thu Sep 8 18:19:11 EDT 2016


I beg to differ. Sometimes lists are the best way to do it. I have a column that can contain any combination of 3 values: customer, site, and IT or nothing at all. I use vert bars as delimiter, so my query is ex. "... where contacttype LIKE '%|site|%'". I also have another column where a contact can be linked to several different sites. So "... where sited LIKE '%|1546|%'". This is a MUCH simpler way of managing a list of possible values without using lookup tables and joins. 

I am not an SQL guru and few and far between are the times I ever actually have to craft a join. If I need relational data, I pull the data into Livecode as arrays and do multiple queries on the chid tables if necessary. I understand this is not efficient for large datasets. 

I think often if I am having a problem developing a query, it is because I haven't created the database structure very well. 

Bob S


> On Sep 8, 2016, at 11:42 , Peter Haworth <pete at lcsql.com> wrote:
> 
> Never a good idea to put lists of items into a single column.  If you need
> that capability, best to define another table with uniqdna column as a
> foreign key to your main table and a column to hold a single pardna, then
> have 1 row for each uniqdna/pardna pair.  With thst structure the query is
> just a matter of a simple join between the two tables.
> 
> On Thu, Sep 8, 2016 at 11:23 AM Mike Kerner <MikeKerner at roadrunner.com>
> wrote:
> 
>> I would make IS IN work, and do it in two queries, OR, in the case where
>> you have something less than 10k values, just build a container and chunk
>> it.  If that wasn't an option, I'd N:N it, and just add the extra tables
>> and a join.
>> 
>> On Thu, Sep 8, 2016 at 1:16 PM, Dr. Hawkins <dochawk at gmail.com> wrote:
>> 
>>> I've been trying to wrap my head around this query for weeks, and hope
>>> someone can point out what I'm missing.
>>> 
>>> In my table, the main key is uniqDna, an integer.  There can also be
>>> dpdnDnas and parDnas, the uniqDna of a dependent or parent dna.
>>> 
>>> I'm not seeking any good way to keep the dndDnas and parDnas fields other
>>> than as space departed lists.
>>> 
>>> I'm trying to find a sane way to SELECT upon values contained in one of
>>> those lists.  (if there could only be one value, this would be trivial).
>>> 
>>> The closest I'm seeing is making sure that there are spaces before and
>>> after the list, so uniqDna 2 might have dpdDnas " 6 7 8 ", and then
>> "SELECT
>>> uniqDna, stuff FROM theTable WHERE parDnas LIKE '% 2 %'"--but this has to
>>> be done one by one.
>>> 
>>> What I'm looking for is something like
>>> 
>>> "SELECT uniqDna, stuff, parDnas FROM theTABLE WHERE
>>> some_other_entry.parDnas CONTAINS uniqDna"
>>> 
>>> That is, a list of all the uniqDna that have parents, with there
>> associated
>>> parDnas
>>> 
>>> As i understand it, IS IN () needs a list of literals, rather than
>> another
>>> query result.
>>> 
>>> I'm looking at tables with dozens, not thousands, of entries.  Hundreds
>>> *might* be conceivable as a rare case, but isn't a concern for general
>> use.
>>> 
>>> I'm assuming that some kind of JOIN might do this, but the problem still
>>> remains of the operator to use to check for an integer value in one
>> column
>>> being one of the words in another . . .
>>> --
>>> Dr. Richard E. Hawkins, Esq.
>>> (702) 508-8462
>>> _______________________________________________
>>> use-livecode mailing list
>>> use-livecode at lists.runrev.com
>>> Please visit this url to subscribe, unsubscribe and manage your
>>> subscription preferences:
>>> http://lists.runrev.com/mailman/listinfo/use-livecode
>>> 
>> 
>> 
>> 
>> --
>> On the first day, God created the heavens and the Earth
>> On the second day, God created the oceans.
>> On the third day, God put the animals on hold for a few hours,
>>   and did a little diving.
>> And God said, "This is good."
>> _______________________________________________
>> use-livecode mailing list
>> use-livecode at lists.runrev.com
>> Please visit this url to subscribe, unsubscribe and manage your
>> subscription preferences:
>> http://lists.runrev.com/mailman/listinfo/use-livecode
>> 
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode





More information about the use-livecode mailing list