Oh, is it really such a bad design? Here is some more.
What is substring matches, and why do i need them?


TBL_PRODUCTS
ID      PRODUCTNAME
1       SAMSUNG TV
2       PHILIPS DVD-PLAYER
3       PHILIPS TV
4       MAXTOR DMAX
5       LaCie HARDDIVE

---------------------------------------------

TBL_SPECS
ID      DETAIL
1       Widescreen
2       VCD
3       DiVX
4       Capacity
5       Inch


---------------------------------------------

PRODUCT_SPECS
PRODID          SPECID          VALUE
1               1               YES
1               5               32
2               2               NO
2               3               3.11
3               1               NO
3               1               28
4               4               80
5               4               120

-----------------------------------------

Thanks again for your help!

Quoting [EMAIL PROTECTED]:

> This sounds like a simple case of bad design. 
> 
> You need to be able to locate specific values for various product 
> descriptions but they are all mangled together into just one field. You 
> end up trying to do substring matches and all hell breaks loose and 
> performance hits the skids.
> 
> My suggestion is to somehow re-process your "value" column into separate
> 
> specific columns or child tables, one for each distinct value held in
> the 
> "value" field. I can identify the potential values of `hdd_size`, 
> `monitor_size`, `monitor_resolution`,`hw_port`,`cd_supp_format`....
> 
> Your data is unmanageable in its present format and you need to scrub
> and 
> massage it into shape before what you have will be marginally useful.
> 
> Shawn Green
> Database Administrator
> Unimin Corporation - Spruce Pine
> 
> 
> Test USER <[EMAIL PROTECTED]> wrote on 12/09/2005 04:56:21 PM:
> 
> > Hi again :)
> > 
> > The table contains a column named value and is in the format 
> varchar(255).
> > This column contains specifications for different computer products.
> > There is also a id column so i know which product it belongs to.
> > 
> > value(varchar)
> > 80
> > 17"
> > 1024x768
> > USB
> > DiVX
> > 
> > For example, the first value 80 tells me with som joins that the 
> > product maxtor 
> > diamondmax has 80Gb capacity. And that a Philips DVD-player
> supportsDiVX 
> for 
> > the last value in this example.
> > 
> > Now i want to select all harddrvies with a capacity greater or equal
> to 
> 80.
> > Doing a "select value from tbl where value >=80 order by value
> DESC"will 
> give 
> > som unexpected results.
> > 
> > If you have 80, 120, 250 in the database the result will be:
> > 80
> > 250
> > 120
> > 
> > I don't really know how to solve this other than to use CAST(value as 
> SIGNED).
> > Maybe i could rebuild the database but i don't know how a good 
> databasedesign 
> > for this would look like :)
> > 
> > Thanks for you help!
> > 
> > Quoting [EMAIL PROTECTED]:
> > 
> > > I misunderstood, I thought you were looking for a way of converting 
> your
> > > 
> > > numbers-as-strings into a native numeric format. 
> > > 
> > > Please describe you situation better: What language are you using to
> > > build 
> > > your application. Are you composing the SQL statement client-side or
> 
> > > server-side? What kind of SQL statement are you trying to execute?
> > > 
> > > Your table structures (the output of SHOW CREATE TABLE ...  works
> very 
> 
> > > well) and some sample data would also help.
> > > 
> > > Sorry for the confusion!
> > > 
> > > Shawn Green
> > > Database Administrator
> > > Unimin Corporation - Spruce Pine
> > > 
> > > 
> > > Test USER <[EMAIL PROTECTED]> wrote on 12/09/2005 04:28:44 PM:
> > > 
> > > > Hello, thanks for your help!
> > > > I dont really get it :)
> > > > 
> > > > You suggestion is to have a seperate column with the name 
> numericvalue
> > > 
> > > and 
> > > > insert userinput into that and add a zero, right?
> > > > 
> > > > Could you explain more, why when how will this help me :)
> > > > 
> > > > Quoting [EMAIL PROTECTED]:
> > > > 
> > > > > Assuming that your text data is in the column `userinput` and
> you
> > > want
> > > > > the 
> > > > > integer values to be in the column `numericvalue`, this
> statement
> > > will 
> > > 
> > > > > populate the `numericvalue` column all at once:
> > > > > 
> > > > > UPDATE `odd_data_table` SET `numericvalue` = `userinput` + 0;
> > > > > 
> > > > > You are better off checking for type-correctness before you
> enter
> > > data 
> > > 
> > > > > into the database than you are trying to correct it after the 
> input.
> > > 
> > > > > However, I have had to do just this kind of conversion on many 
> > > occasions
> > > > > 
> > > > > (old data, bad batch inputs, text file bulk loads, etc.)  so I 
> know 
> > > > > techniques like this still have their place.
> > > > > 
> > > > > Shawn Green
> > > > > Database Administrator
> > > > > Unimin Corporation - Spruce Pine
> > > > > 
> > > > > Test USER <[EMAIL PROTECTED]> wrote on 12/09/2005 03:30:17 PM:
> > > > > 
> > > > > > in an application i have written there is the need to do a 
> search 
> > > from
> > > > > 
> > > > > mysql 
> > > > > > using numbers that are stored in a varchar column. it is not 
> > > > > > possible to store 
> > > > > > only the results with numbers in a seperate column.
> > > > > > so i was looking at CAST(), is this a big performance loss? is
> > > > > theresome 
> > > > > way 
> > > > > > of benchmarking different queries easy?
> > > > > > 
> > > 
> > 
> > 
> > 
> > 
> > 
> > -------------------------------------------------
> > FREE E-MAIL IN 1 MINUTE!
> >  - [EMAIL PROTECTED] - http://www.pc.nu
> 



 

-------------------------------------------------
FREE E-MAIL IN 1 MINUTE!
 - [EMAIL PROTECTED] - http://www.pc.nu

-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to