Страница 1 от 2 12 ПоследноПоследно
Резултати от 1 до 15 от общо 18

SQL- НОВОБРАНЦИ

Сподели във Facebook Сподели в Twitter Изпрати на Email Сподели в LinkedIn
  1. Junior Member
    Тук е от
    Sep 2005
    Мнения
    19
    #1

    SQL- НОВОБРАНЦИ

    :brickwall: Надявам се, че темата ще намери почитатели е поне дузина, ако не е така супер тогава само аз ще обирам банки. Та аз изучавам усърдно този странен език с хиляди стандарти и всяка помощ ми е добре дошла, надявам се да си бъдем полезни.

    Та имам си аз две таблици които са в релационна връзка:*

    tab.1* * * * * * * * * * * * * * * * * * * * *tab.2
    * А* *|* B* * |* *C* * * * * * * * * * * * * *A1* *|* *B1* * |* * C1
    ---------------------* * * * * * * * * * *--------------------------------------
    * *1* |* 31 | 213 1 | 31 | fafafasfaf
    2 | 12 | 234 2 | 12 | sdgfsdgdsg

    Релация м/у В->В1
    Трябва ми заявка която да ми измъкне info от колона C i C1 като се спази релационната връзка В->В1, абе тябва да изглежда така:
    C | C1 |
    ------------------------------
    213 | fafafafafa |
    234 | sdgfsdgdsg |
    Мерси предварително.

  2.  
     
  3. Senior Member Аватара на Bibi
    Тук е от
    Nov 2004
    Мнения
    2,757
    #2

    Re: SQL- НОВОБРАНЦИ

    SELECT tab1.c, tab2.c1
    FROM tab1, tab2
    WHERE tab1.b = tab2.b1

    или
    SELECT tab1.c, tab2.c1
    FROM tab1
    INNER JOIN tab2 ON tab1.b = tab2.b1

    (Всичко това при условие, че А не участва в ключа на релацията.)

    P.S.
    Tук има уроци:
    http://www.w3schools.com/sql/default.asp

  4. Senior Member
    Тук е от
    Dec 2003
    Мнения
    1,019
    #3

    Re: SQL- НОВОБРАНЦИ

    http://www.sqlcourse.com/ и http://sqlcourse2.com/
    също мже да са ти полезни

  5. Junior Member
    Тук е от
    Sep 2005
    Мнения
    19
    #4

    Re: SQL- НОВОБРАНЦИ

    Благодаря за отговорите бяха ми много полезни

  6. Junior Member
    Тук е от
    Sep 2005
    Мнения
    19
    #5

    Re: SQL- НОВОБРАНЦИ

    Проблем помагайте!!!!!!!!!!
    Работя с MS SQL SERVER.2000 (NOTEBOOK, PIII 700MH, 128RAM, DB 20Mb, OS WIN2000 SERVER SP4), проблема се състои в това, че "Enterprise Menager" се бави адски много 7-15 минути за съвсем прости действия. Например отварянетъо на базата отнема 5-6 минути. Преди няколко дена беше за 0.5-1 минута. Ся какво му стана немога да се светна. Аиде със здраве и ако някой има идея да ми пише.

  7. Junior Member
    Тук е от
    Sep 2005
    Мнения
    19
    #6

    Re: SQL- НОВОБРАНЦИ

    Някой може ли да ми даде смислено обяснение защо не работи следната заявка (вече ще ги наричам заядчици от заяждане дрън дрън) та* на темат:

    SELECT* *
    FROM* *CLIENT
    WHERE* NAME LIKE '%СТЕФ%'

    като колона "NAEM"* = NVARCHAR

    Заявката не ми връща нищо, а има "СТЕФКА" В КОЛОНА "NAME" ? ? ? ? ?
    Ако обаче използвам числа или латиница няма проблем, заявката се изпълнява успешно, но в момента в които стане дума за кирила край с резултатите.

    Някакви идей някой да има.

    Явно нещо с кодовете на символите не е наред.

  8.  
     
  9. Senior Member Аватара на Bibi
    Тук е от
    Nov 2004
    Мнения
    2,757
    #7

    Re: SQL- НОВОБРАНЦИ

    От сега да предупредя, че не съм спец и не искам да подвеждам никого.
    Наистина мисля, че проблемът е в кодовите таблици.
    Най-добре е още когато се създава базата да се указват енкодингите на колоните, в които се очаква да има кирилица.
    Ако вече е късно за такъв подход, може да се преправят данните в базата (особено ако не е много голяма и ако към нея ще текат много такива заявки). Нещо като:
    ALTER TABLE `CLIENT` CHANGE CHARACTER SET cp1251 COLLATE cp1251_bulgarian_ci

    Но може да опиташ и друго - в самата заявка да укажеш енкодинга:
    SELECT * FROM CLIENT
    WHERE NAME LIKE _bulgarian '%СТЕФ%' COLLATE cp1251_bulgarian_ci;

  10. Member
    Тук е от
    Apr 2005
    Мнения
    963
    #8

    Re: SQL- НОВОБРАНЦИ

    @SisLog
    Първо - опитай дали вместо '%СТЕФ%', няма да проработи '*СТЕФ*' - споменал си нещо за MS SQL SERVER
    Второ - думата NAME е резервирана по ANSI стандарта - опитай с CLIENT.NAME

  11. bx
    bx е офлайн
    Junior Member
    Тук е от
    Jan 2005
    Мнения
    49
    #9

    Re: SQL- НОВОБРАНЦИ

    Понеже и аз съм новообранец в тази област, искам да попитам следното нещо. Как да вмъкна нова колона, чрез SQL заявка, която прави математически операции (като умножение и деление) с преднишните колони. Примерно:

    А | B | C
    ---------------------
    1 | 31 | А*B


    Какво трябва да представлява заявката, за да създаде C колоната, която прави умножение между A и B.
    Извинявам се за елементарния въпрос, но все пак си е въпрос

  12. Senior Member Аватара на Bibi
    Тук е от
    Nov 2004
    Мнения
    2,757
    #10

    Re: SQL- НОВОБРАНЦИ

    И аз се извинявам за отговора, обаче:
    1. сигурен ли си, че е добра идея да имаш колона, чиято сойност може да се изчисли от останалите? Обикновено не се прави така.
    2. ALTER TABLE името на таблицата ADD името на новата колона DATATYPE...
    това добавя колоната, после ще трябва само да я попълниш с произведенията:
    UPDATE таблица SET c=a*b
    3. В зависимост от това на какво пишеш (MySQL, Oracle...), потърси "triggers" - това е начин да обвържеш стойността в новата колонка с предишните две.

  13. Member
    Тук е от
    Apr 2005
    Мнения
    963
    #11

    Re: SQL- НОВОБРАНЦИ

    Към това, което е написала Bibi, мога да ти предложа да потърсиш в Reference на използваната от теб база дали се поддържат полета от даден тип с опция COMPUTED - това е най-лесния начин да имаш изчислено поле - лошото е, че не съм виждал 100% ANSI compliant database


    ето едно примерче от MSDN
    CREATE TABLE t2 (a int, b int, c int, x float,
    y AS CASE x
    WHEN 0 THEN a
    WHEN 1 THEN b
    ELSE c
    END)

  14.  
     
  15. Senior Member
    Тук е от
    Dec 2003
    Мнения
    1,019
    #12

    Re: SQL- НОВОБРАНЦИ

    а що трябва да се пази изобщо в базата?
    като ти потрябва
    select a, b, a*b as c from tablica where ...

  16. Member
    Тук е от
    Apr 2005
    Мнения
    963
    #13

    Re: SQL- НОВОБРАНЦИ

    В повечето СУБД, въпросните полета не се пазят като стойност и затова има условности при установяваване на индекс върху тях!

    Идеята да има такива полета доколкото знам, е съответствие с бизнес-логиката на продукта, ползващ базата - затова и не са стойности, а функция върху други данни/полета...

    М-да - твоя селект върши работа, но когато са милиони записите, малко трудно ще ги калкулира, особено ако те интересува определено подмножество базирано на a*b - затова са и индексите ако/когато са възможни...

  17. Senior Member
    Тук е от
    Dec 2003
    Мнения
    1,019
    #14

    Re: SQL- НОВОБРАНЦИ

    Но при милиони записи, това поле колкото и да е малко ще заема чуствителен обем памет на харда.
    А ако точно това поле е толкова важно обикновено някое от А,Б може да се представи като функция от Ц и няма да се налага да се пази

    Малко оффтопик стана...

  18. Member
    Тук е от
    Apr 2005
    Мнения
    963
    #15

    Re: SQL- НОВОБРАНЦИ

    По принцип, CALCULATED полетата се store-ват малко по-различно от останалите - това зависи и от СУБД-то...

    А иначе си прав - има такава зависимост между размера и бързодействието!

    Весела Нова Година!

Сподели във Facebook Сподели в Google Plus Сподели в Twitter Изпрати на Email Сподели в LinkedIn
Страница 1 от 2 12 ПоследноПоследно

SetCombG.com
SetCombG.com е портален сайт и Форум за битова техника, телевизори, климатици, лаптопи и смартфони, създаден през 1999 година.
Заедно сме над 20 години!
Следвай ни
Горе