|
Страници по тази тема: 1 | 2 | >> (покажи всички)
Тема
|
Vyzmojen li e takyv SQL izraz
|
|
Автор | Bruta (Нерегистриран) |
Публикувано | 14.09.02 17:25 |
|
tozi vypros shte e dylgichuk, izvinqvam se za koeto, no iskam da obqsnq podrobno za kakvo stava duma.
Znachi predstavete si edna prosta tablica koqto ima 2 poleta. Ednoto ot tezi dve poleta e string koito shte se povtarq mnogo pyti. stava eto tova:
|---------|
|pole1 | pole2|
|---------|
|value1| val1 |
|value2| val1 |
|value3| val1 |
|---------|
Vmesto da zapisvam edni i syshti stoinosti mnogo pyti si syzdavam oshte edna tablica koqto da mi sydyrja samo tozi string i nqkakyv identifikator za nego. Poluchava se:
table1
|---------|
|pole1 | pole2|
|---------|
|value1| 1 |
|value2| 1 |
|value3| 1 |
|---------|
table2
|--------|
| id | value |
|--------|
| 1 | val1 |
|--------|
sled tova s edno sql izrazche kato:
select table1.pole1, table2.value as pole2 from table1, table2 where table2.id = table1.pole2;
si vzemam napravo stoinostite koito mi trqbvat, t.e.:
|----------|
|value1 | val1 |
|value2 | val1 |
|value3 | val1 |
|----------|
Za nqkoi koito se zanimava s bazi danni tova si e prosta rabota. Dotuk dobre. Ami ako imame slednoto polojenie:
table1
|---------|
|pole1 | pole2|
|---------|
|value1| 1,2,3|
|value2| 1,3 |
|value3| 1 |
|---------|
table2
|--------|
| id | value |
|--------|
| 1 | val1 |
| 2 | val2 |
| 3 | val3 |
|--------|
Moje bi se seshtate veche tochno za kakvo govorq. s sql izraz:
select table1.pole1, table2.value as pole2 from table1, table2 where table1.pole2 regexp table2.id;
rezultatyt koito mi se vryshta ima vida:
|----------|
|value1 | val1 |
|value1 | val2 |
|value1 | val3 |
|value2 | val1 |
|value2 | val3 |
|value3 | val3 |
|----------|
A na men tova ne mi vyrshi rabota.
vyprosyt mi e, ima li nqkakyv nachin i ako nqkoi moje da mi napishe primeren sql izraz s koito moje da stane taka che rezultatite da imat vida:
|------------------|
|value1 | val1, val2, val3 |
|value2 | val1, val3 |
|value3 | val3 |
|------------------|
Mnogo shte sum blagodaren na vseki koito moje da mi dade nqkakyv syvet, i se izvinqvam ako na nqkoi tova mu se e storilo prosto za tova dylgo opisanie.
| |
|
Виж
__________________________________
Пътят към ада е осеян с добри намерения
| |
Тема
|
Re: Vyzmojen li e takyv SQL izraz
[re: ..:: StanProg ::..]
|
|
Автор | Bruta (Нерегистриран) |
Публикувано | 15.09.02 16:53 |
|
Prochetoh tova koeto pisheshe tam, no ne mislq che to se otnasq kym moeto polojenie. Beginner iska samo da tyrsi izmejdu tezi 'x1,x5,x7,xn', a na men ne mi e problema v tova. priznavam che edva li e nai-dobroto reshenie tova koeto sym izbral, no...
Az iskam da izbegna povtarqneto na rezultatite za vsqka stoinost.
| |
Тема
|
Re: Vyzmojen li e takyv SQL izraz
[re: Bruta]
|
|
Автор |
NDeu (минаващ) |
Публикувано | 15.09.02 19:05 |
|
Виждам, че имаш желание да четеш, но имам чувството, че знанията ти за БД за хаотични.
Не го приемай като упрек, никой не се е родил научен:) но е добре да прочетеш малко за НАЧАЛАТА
Ако ти е интересно вж.
| |
Тема
|
Re: Vyzmojen li e takyv SQL izraz
[re: NDeu]
|
|
Автор | Bruta (Нерегистриран) |
Публикувано | 15.09.02 19:46 |
|
10x.
tochno nqkakvo podobno chetivo si tyrseh.
| |
Тема
|
Re: Vyzmojen li e takyv SQL izraz
[re: Bruta]
|
|
Автор | svircho (Нерегистриран) |
Публикувано | 16.09.02 14:10 |
|
Здравей, според мен тук става въпрос за нормализиране на бази данни. Не можеш ей така да решиш да преместиш стойностите от една колона в отделна таблица макар че почти си уцелил едното правило. Базата ти трябва да е нормализирана, т.е. да са спазени поне първите 3 нормални форми(това са правилата за които говорих), а те общо са 5 + едно допълнение на 3-тата което се води отделно правило. Но като за начало са важни първите 3. Ето ти линк за да се запознаеш с тях:http://www.devshed.com/Server_Side/MySQL/Normal/Normal1/page1.html
Ти си се опитал да приложиш първата без да я знаеш, което не е малко. Изнесъл си повтарящата се информация в отделна таблица. Но не е правилно да я изнесеш по този начин, ти виждаш че нчкакъв стринг се повтаря и го слагаш в отделна таблица. Само че за един запис можеш да имаш няколко стринга които се повтарят и са отделени от запетаи. За да не обяснявам кое действие от кое правило е предизвикано(ти ще го видиш в статията) ще ти кажа как трябва да стане: Правиш си номенклатура със всички повтарящи се стрингове с 2 колони, sn_id, sn_name - където първата ти е уникален номер а втората името на стринга. И за да не останат в първтата ти таблица записи с номера, отделени от запетая, което е изключително неправилно, си правиш една нова таблица, която ще помни за дадено id от твоята първа таблица кои id-та от номенклатурата му отговарят. Ако приемем, че втората допълнителна таблица която ще направиш се казва mytable_link, а първата string_name, където началната ти таблица се казва mytable то тогава израза, който решава проблема ти е следния:
SELECT m.pole1,sn.name
FROM mytable m,mytable_link ml,string_name sn
WHERE ml.mytable_id=m.mytable_id
AND ml.sn_id=sn_id
Но така всеки стринг ще ти излезе на отделен ред а не всички стрингове отделени от запетаи за всеки запис от mytable както ти искаш.
Ако това не те устройва за display-а ти ще си направиш направиш функция, която за всеки един запис от mytable ще взима всички записи от mytable_link отговарящи на този от mytable и ще ги сложи в един масив например които ще ти го върне като стойност и ти съответно ще обходиш този масив и ще отпечатиш елементите му отделени от запетая и готово.
Сега в момента не мога да се сетя как само с SQL да се отпечатат на един ред и мисля, че не може без да претендирам че каквото мисля то е точно така.
Това е моят съвет!
| |
Тема
|
Re: Vyzmojen li e takyv SQL izraz
[re: svircho]
|
|
Автор |
salle (Един такъв) |
Публикувано | 16.09.02 15:37 |
|
![](http://i.dirbg.com/clubs/icons/cool.gif)
| |
Тема
|
Re: Vyzmojen li e takyv SQL izraz
[re: svircho]
|
|
Автор |
Bruta () |
Публикувано | 16.09.02 19:59 |
|
10x:-)
Izqsnih si nqkoi neshta
| |
|
"Базата ти трябва да е нормализирана, т.е. да са спазени поне първите 3 нормални форми"
Има доста случаи в които е по-добре да не е нормализирана, а по някога е невъзможно да е в която и да е нормална форма.
__________________________________
Пътят към ада е осеян с добри намерения
| |
|
Адски ми е интересно как ще направиш SQL база данни която да не е дори Първа Нормална Форма
И ако успееш за какво точно ще ти послужи?
| |
|
Страници по тази тема: 1 | 2 | >> (покажи всички)
|
|
|