Մուտք գործեք MySQL: Մուտք գործեք MySQL Mysql հարցումների պատմություն

Իսկ ստանդարտ փաթեթում դուք կարող եք շատ բաներ անել դրա հետ: Այնուամենայնիվ, ինչպես դա կարող է լինել, այն ունի մի շարք օգտակար գործառույթներ, որոնք կարող են միացնել առանձին: Այս հոդվածում մենք կբացահայտենք լրացուցիչ հնարավորություններ PhpMyAdmin և տեսեք, թե ինչպես կարող են դրանք օգտակար լինել մեզ համար:

Կարգավորում

Նախքան սկսելը, համոզվեք, որ PhpMyAdmin-ը գործում է և աշխատում է: Եթե ​​մուտք գործեք, կարող եք նկատել այսպիսի հաղորդագրություն.

phpMyAdmin-ի կազմաձևման պահեստն ամբողջությամբ կազմաձևված չէ, որոշ ընդլայնված գործառույթներ ապաակտիվացված են: Պարզելու համար, թե ինչու, սեղմեք այստեղ:
(phpMyAdmin կոնֆիգուրացիայի խանութը ճիշտ կազմաձևված չէ, որոշ գործառույթներ անջատված են: Սեղմեք այստեղ՝ պարզելու, թե ինչու)

$cfg["Servers"][$i]["controluser"] = "pma"; $cfg["Servers"][$i]["controlpass"] = "pmapass"; $cfg["Servers"][$i]["pmadb"] = "phpmyadmin"; $cfg["Servers"][$i]["bookmarktable"] = "pma__bookmark"; $cfg["Servers"][$i]["relation"] = "pma__relation"; $cfg["Servers"][$i]["table_info"] = "pma__table_info"; $cfg["Servers"][$i]["pdf_pages"] = "pma__pdf_pages"; $cfg["Servers"][$i]["table_coords"] = "pma__table_coords"; $cfg["Servers"][$i]["column_info"] = "pma__column_info"; $cfg["Servers"][$i]["history"] = "pma_history"; $cfg["Servers"][$i]["recent"] = "pma_recent"; $cfg["Servers"][$i]["table_uiprefs"] = "pma__table_uiprefs"; $cfg["Servers"][$i]["users"] = "pma_users"; $cfg["Servers"][$i]["usergroups"] = "pma__usergroups"; $cfg["Servers"][$i]["navigationhiding"] = "pma__navigationhiding"; $cfg["Servers"][$i]["tracking"] = "pma_tracking"; $cfg["Servers"][$i]["userconfig"] = "pma__userconfig"; $cfg["Servers"][$i]["designer_coords"] = "pma__designer_coords"; $cfg["Servers"][$i]["favorite"] = 'pma__favorite'; $cfg["Servers"][$i]["savedsearches"] = "pma__savedsearches";

Փոխեք օգտվողի անունը, գաղտնաբառը և տվյալների բազայի անունը ըստ ձեր նախասիրության: Մնացած կազմաձևման արժեքները աղյուսակների անուններն են: Դատարկ թողնելով դրանց համապատասխան գործառույթները կանջատվեն: Բայց ընդհանուր առմամբ խորհուրդ կտամ այս անունները թողնել այնպես, ինչպես կան։ Կախված PhpMyAdmin-ի տարբերակից, ոչ բոլոր արժեքները հասանելի կլինեն լռելյայն: Այս դեպքում ես օգտագործել եմ PhpMyAdmin տարբերակը 4.2.x:

Երբ ավարտեք կազմաձևը, դուք պետք է ստեղծեք տվյալների բազա: Ստեղծեք տվյալների բազա ձեր կազմաձևման ֆայլում նշած անունով: Հաջորդը, ձեր մեքենայի վրա փնտրեք create_tables.sql անունով ֆայլ: Ամենայն հավանականությամբ, տրված ֆայլըկգտնվի տեղադրված PhpMyAdmin-ի արմատային գրացուցակում կամ սկրիպտների ենթագրքում: Եթե ​​դուք Linux-ում եք, ապա գտնվելու վայրը կլինի /usr/share/phpMyAdmin/examples/ կամ /usr/share/doc/phpmyadmin/scripts/: Գործարկեք այս ֆայլը ստեղծված տվյալների բազայի դեմ: Եթե ​​վերը նշված կոնֆիգուրայում փոխել եք աղյուսակների անունները, մի մոռացեք դրանք փոխել նաև տվյալների բազայում:

ՏՐԱՄԱԴՐԵԼ ՕԳՏԱԳՈՐԾՈՒՄԸ mysql.*-ին «pma»@«localhost»-ին, որը նույնականացվում է «pmapass»-ով; mysql.user-ում «pma»@«localhost»-ի վրա; GRANT SELECT ON mysql.db TO "pma"@"localhost"-ին; GRANT SELECT ON mysql.host TO "pma"@"localhost"-ին; GRANT SELECT (Host, Db, User, Table_name, Table_priv, Column_priv) ON mysql.tables_priv TO "pma"@"localhost"-ում; GRANT SELECT, INSERT, UPDATE, DELETE ON phpmyadmin.* TO "pma"@"localhost";

PhpMyAdmin-ից դուրս գալուց և նորից մուտք գործելուց հետո մենք պետք է տեսնենք, որ նախազգուշացումը չկա: Եթե ​​բացակայում է, սեղմեք հղման վրա՝ պարզելու, թե ինչն է պակասում։

Դիտարկենք լրացուցիչ տարբերակներ:

Էջանիշեր

Միացնելով էջանիշների ընդլայնումը, դուք կկարողանաք էջանշել հարցումները: Հարցում ստեղծելիս կարող եք այն էջանշել: Բացի այդ, եթե հարցումն արդեն գործարկվել է, կարող եք էջանշել այն՝ ոլորելով էջի ներքևի հատված և լրացնելով ձևը:

Երբ դուք գնում եք SQL ներդիր, ներքևում կտեսնեք վահանակ, որտեղ կարող եք ընտրել հարցումը էջանիշներից: Ընտրեք ձեր ուզածը և նշեք, թե ինչ եք ուզում անել դրա հետ՝ կատարել, դիտել կամ ջնջել:

Միացումներ

Հարաբերությունների տարբերակը, հավանաբար, ամենալավ բանն է, որ ես երբևէ օգտագործել եմ: Եթե ​​դուք օգտագործում եք օտարերկրյա բանալիներ, ապա այդպիսի ստեղները կդառնան սեղմելի: Երբ սեղմում եք օտար բանալիի վրա, դուք կտեղափոխվեք մեկ այլ աղյուսակ. այն գրառումը, որին վերաբերում է արտաքին բանալին:

Բացի այդ, օտար բանալի ավելացնելիս կամ խմբագրելիս, տեքստի մուտքագրման դաշտի փոխարեն, ձեզ կներկայացվի բոլոր հնարավոր տարբերակների ցանկը:

Աղյուսակային տեղեկատվություն

Իհարկե, օտարերկրյա բանալու համար բոլոր հնարավոր արժեքներով ցուցակ տեսնելը լավ է: Բայց ավելի լավ կլիներ, եթե ID-ի փոխարեն մեզ կոնկրետ սյունակ ցույց տան: Դրան հասնելու համար դուք պետք է միացնեքable_info-ը: Գնացեք հիմնական աղյուսակ, անցեք «Կառուցվածք» ներդիր և կտտացրեք հղման դիտման հղմանը: Եթե ​​ոլորեք էջի ներքևում, կտեսնեք, թե որ սյունակը կցուցադրվի այս բանալիի համար:

Եթե ​​ես ստեղծեմ նոր ռեկորդօտար բանալիով, այնուհետև հիմնական բանալիի արժեքի կողքին ես կտեսնեմ իմ նշած սյունակի արժեքը: Այժմ նույնացուցիչը հիշելու կարիք չկա։

PDF էջեր

Աղյուսակների միջև փոխհարաբերությունները կարող են արտահանվել PDF: Դա անելու համար դուք պետք է ակտիվացնեք pdf_pages-ը, table_coords-ը և կապը կոնֆիգուրայում: Հաջորդ քայլը տվյալների բազայի բացումն է, որը ցանկանում եք արտահանել PDF: Կտտացրեք «Գործողություններ» ներդիրին: Հաջորդը, սեղմեք «Խմբագրել կամ արտահանել հղման դիագրամ» հղմանը: Լրացրեք բոլոր դաշտերը և սեղմեք «Ներկայացնել»: Եթե ​​լրացրել եք ձևաթուղթը, ապա կունենաք PDF ֆայլբոլոր անհրաժեշտ տվյալներով։

Սյունակի Տեղեկություն

Սյունակի տեղեկատվության տարբերակի միջոցով կարող եք մեկնաբանություններ ավելացնել սյունակների անուններին: Սա կարող է օգտակար լինել, երբ ցանկանում եք այլ մարդկանց փոխանցել, թե ինչ է այս սյունակը և ինչ տվյալներ են պահվում դրանում: Դուք կարող եք դա անել՝ փոխելով սյունակի տվյալները: Դուք կարող եք նկատել, որ սյունակը ավելացվել է նոր մեկնաբանություն. Եթե ​​մուտքագրեք մեկնաբանություն, այն կհայտնվի հենց սյունակի անվան տակ:

Նույն կերպ փոխակերպումները կարող են կիրառվել սյունակների վրա։ Փոխակերպումների միջոցով դուք կարող եք ֆայլի անունը դարձնել հիպերհղում, որը կբացի նշված ֆայլը:

Պատմություն

Եթե ​​միացնեք պատմությունը, ապա PhpMyAdmin-ի միջոցով արված բոլոր հարցումները կպահվեն ձեր պատմության մեջ, մինչև չավարտեք նիստը կամ փակեք զննարկիչը: Պատմությունը կարելի է դիտել՝ զանգահարելով «Հարցում» երկխոսության տուփը և սեղմելով «SQL History» կոճակը։

Վերջերս

Վրա նավիգացիոն բարԴուք կարող եք նկատել «Վերջին» կոճակը, որը պարունակում է աղյուսակների բացվող ցանկը, որոնք վերջերս դիտել եք: Այս ցանկը ցուցադրվում է լռելյայն: Բայց եթե ցանկանում եք այն մշտապես պահել նիստերի միջև, կարող եք միացնել վերջին տարբերակը կոնֆիգուրայում, և ձեր զննարկման պատմությունը կպահվի տվյալների բազայում:

Սեղանի ցուցադրման կարգավորումներ

Աղյուսակները դիտելիս կարող եք փոխել սյունակների հերթականությունը՝ քաշելով: Այս փոփոխությունները տեսանելի են միայն ձեզ: Սյունակների իրական հերթականությունը չի փոխվել։ Բացի այդ, դուք կարող եք նաև դասավորել սյունակները աճման և նվազման կարգով: Նման փոփոխությունները պահվում են նստաշրջանում, և երբ մուտքագրված չլինեն, դրանք կզրոյացվեն և կփոխարինվեն լռելյայն կարգավորումներով: Այնուամենայնիվ, եթե ցանկանում եք, որ աղյուսակները մշտապես նայեն ձեզ, ապա միացրեք table_uiprefs տարբերակը:

Օգտագործողների և օգտվողների խմբեր

Դուք կարող եք չցանկանալ ցուցադրել բոլոր հնարավորությունները բոլոր օգտագործողների համար: Այս դեպքում դուք կարող եք դրանք բաժանել խմբերի «Օգտագործողներ» ներդիրում: Ստեղծեք նոր խումբ և սահմանեք, թե ինչ կարող են տեսնել այդ խմբի օգտատերերը: Այնուհետև կարող եք օգտատերեր ավելացնել այս խմբին, և կարող եք վստահ լինել, որ նրանք կտեսնեն միայն ընտրացանկի տարրերը, որոնք դուք նրանց թույլ եք տալիս տեսնել: Այս կերպ Դուք կարող եք տարբեր օգտվողներին հասանելիություն տալ համակարգի տարբեր գործառույթներին, ինչպես նաև թաքցնել չօգտագործված տարբերակները:

Թաքցնում է նավիգացիան

Navigationhiding-ով դուք կարող եք թաքցնել որոշ աղյուսակներ նավիգացիոն տողում: Սեղմելով աղյուսակի անվան կողքին գտնվող լամպի պատկերակը, այն կթաքցվի: Կարող եք նաև այն նորից տեսանելի դարձնել՝ կրկին սեղմելով լամպի պատկերակը: Այս կերպ դուք կբեռնաթափեք նավիգացիոն տողը չօգտագործված աղյուսակներից:

Հետևում

Այս հատկությամբ դուք կարող եք հետևել բոլոր փոփոխություններին, որոնք կատարվել են որոշակի աղյուսակներում PhpMyAdmin. Գնալով աղյուսակ և բացելով Հետևում ներդիրը, կարող եք ստեղծել ընթացիկ աղյուսակի տարբերակը: Այժմ PhpMyAdmin-ի միջոցով այս աղյուսակում կատարված բոլոր փոփոխությունները կպահվեն: Նույն կերպ, դուք հեշտությամբ կարող եք որոշել, թե ինչ փոփոխություններ են կատարվել աղյուսակում վերջին տարբերակի ստեղծման պահից:

Օգտագործողի կարգավորումներ

Օգտատիրոջ բոլոր կարգավորումները լռելյայն պահվում են ձեր բրաուզերում: Սա նշանակում է, որ եթե որոշեք օգտագործել այլ բրաուզեր կամ մաքրել ձեր բրաուզերի քեշը, ձեր բոլոր կարգավորումները կկորչեն: Ակտիվացնելով userconfig-ը, դուք մշտապես պահում եք ձեր կարգավորումները տվյալների բազայում:

Տվյալների բազայի դիզայների կոորդինատները

Միացնելով designer_coords-ը, դուք կարող եք դիտել ձեր աղյուսակների միջև կապերը տվյալների բազայի դիզայներական տեսքով: Մտնելով տվյալների բազա և սեղմելով «Դիզայներ» ներդիրը, կտեսնեք ստորև ներկայացված պատկերի նման մի բան, որը ցույց է տալիս աղյուսակների միջև փոխհարաբերությունները: Այնուամենայնիվ, դուք կարող եք տեսողականորեն կառավարել աղյուսակների միջև հարաբերությունները՝ օգտագործելով այս պատուհանը:

Ֆավորիտներ

Միացնելով նախընտրած տարբերակը՝ տվյալների բազան զննելիս կարող եք աղյուսակների անունների կողքին նկատել աստղանիշների պատկերակները: Ձեր ընտրյալներին աղյուսակ ավելացնելու համար պարզապես սեղմեք աստղի վրա: Նավիգացիոն տողում կտեսնեք «Ընտրյալների» բացվող ցանկը: Այն աղյուսակները, որոնք ավելացրել եք ձեր ընտրյալներին, կհայտնվեն այս ցանկում:

Որոնման ընտրանքների պահպանում

Բացելով տվյալների բազան և անցնելով «Հարցում» ներդիր՝ կարող եք ստեղծել ընդլայնված որոնում: Որոնման ընտրանքները կարող են էջանշվել: Նկատի ունեցեք, որ դրանք ավելի վաղ քննարկված SQL հարցման էջանիշերը չեն: Այս տարբերակով դուք կարող եք պահպանել որոնման պարամետրերը և օգտագործել դրանք ավելի ուշ:

Եզրակացություն

Այս հնարավորությունները միացնելը պարզ է և իսկապես կարող է օգնել տվյալների բազայի կառավարմանը PhpMyAdmin-ի միջոցով: Ինձ հատկապես դուր է գալիս օտար ստեղների միջով նավարկելու հնարավորությունը, որպեսզի կարողանամ տեսնել համապատասխան գրառումները: Հուսով եմ, որ դուք ակտիվացնեք այս հնարավորությունները, և դրանք օգտակար կլինեն ձեր ամենօրյա աշխատանքում:

Այս հոդվածը նվիրված է «Վեբ ծրագրավորման հիմունքներ» թեմայի ուսումնասիրությանը, որտեղ մենք շարունակում ենք աշխատել տվյալների բազայի հետ, բայց մի քանի աղյուսակներով, դրանց միջև հարաբերություններ ստեղծելով և ծանոթանալով. SELECT հայտարարությունը.

  • PHPMyAdmin-ում տվյալների բազայի ստեղծում: Տվյալների հետ աշխատել՝ օգտագործելով PHP, MySQL և HTML
  • Լաբորատորիայի աշխատողի աշխատանքի արդյունավետության և արդյունավետության գնահատման տեղեկատվական համակարգ
  • Նավթային բազայի ղեկավարի համար տեղեկատվական համակարգի մշակում
  • Ավտոտեխսպասարկման դիսպետչերի տեղեկատվական համակարգի ստեղծում
  • Ձեռնարկության արտադրական ցիկլը կառավարելու համար ծրագրային ապահովման գործիքի ֆունկցիոնալության ակնարկ

phpMyAdmin PHP-ով գրված և MySQL սերվերը համաշխարհային ցանցի միջոցով կառավարելու համար նախատեսված ծրագիր է: phpMyAdmin-ն աջակցում է MySQL գործառնությունների լայն շրջանակ, առավել հաճախ օգտագործվող գործողությունները աջակցվում են՝ օգտագործելով օգտագործողի ինտերֆեյս(կառավարել տվյալների բազաները, աղյուսակները, դաշտերը, հարաբերությունները, ինդեքսները, օգտվողները, իրավունքները և այլն), միևնույն ժամանակ կարող եք ուղղակիորեն կատարել ցանկացած SQL հարցում.

հարցումներտվյալների բազայի օբյեկտ է, որն օգտագործվում է աղյուսակներից տվյալները հանելու և օգտագործողին հարմար ձևով տրամադրելու համար: Հարցումների առանձնահատկությունն այն է, որ նրանք տվյալներ են վերցնում բազային աղյուսակներից և դրանց հիման վրա ստեղծում ժամանակավոր աղյուսակ։ Հարցումների օգտագործումը խուսափում է աղյուսակներում տվյալների կրկնօրինակումից և ապահովում է տվյալների բազայում տվյալների որոնման և ցուցադրման առավելագույն ճկունություն:

SQL հարցումներ - Հարցումներ, որոնք կառուցվել են SQL հրահանգների միասնական փաթեթի միջոցով (Structured Query Language - structured query language): SQL-ը չի կարող ամբողջությամբ վերագրվել ծրագրավորման ավանդական լեզուներին, որտեղ էլ որ մուտքագրեք փոփոխականներ, նկարագրեք տեսակը և շատ ավելին, այն պարունակում է տվյալների բազայում պահվող տվյալների համար միայն ստանդարտ հասանելիության օպերատորների մի շարք:

ԼեզուSQLկիսել չորս մաս.

  • Տվյալների սահմանման օպերատորներ(Տվյալների սահմանման լեզու, DDL). ստեղծել («ստեղծել»), փոխել («փոփոխել»), թողնել («ջնջել»):
  • Տվյալների մանիպուլյացիայի օպերատորներ(Տվյալների մանիպուլյացիայի լեզու, DML). ընտրել («ընտրել»), տեղադրել («տեղադրել»), թարմացնել («թարմացնել») և ջնջել («ջնջել»):
  • Տվյալների հասանելիության սահմանման հայտարարություններ(Տվյալների վերահսկման լեզու, DCL). շնորհել («տրամադրել») և չեղարկել («զրկել»):
  • Գործարքների վերահսկման հայտարարություններ(Գործարքի վերահսկման լեզու, TCL). commit («ամբողջական»), rollback («ետ վերադարձնել»), savepoint («պահպանել»):

Մենք կդիտարկենք SQL լեզվի մեկ հրաման՝ տվյալների բեռնման հրամանը ԸՆՏՐԵԼ , այնպես որ այս հրամանի շնորհիվ կարող եք կազմակերպել բոլոր հնարավոր հարցումները։

Օպերատորի շարահյուսությունԸՆՏՐԵԼ

ԸՆՏՐԵԼ <список полей, которые вы хотите отразить в запросе> |*

ԻՑ <список таблиц, с которыми вы работаете>

[ՈՐՏԵՂ <предикат-условие выборки или неявное внутреннее соединение таблиц>]

[ԽՈՒՄԲ ԿՈՂՄԻՑ <список полей группировки> [ՈՒՆԵՑՈՂ <предикат-условия для группировки>]]

[ՊԱՏՎԵՐ ԿՈՂՄԻՑ <список полей, по которым упорядочивает вывод> ]

Քառակուսի փակագծերում կցված տեղեկատվությունը, ինչպես միշտ, պարտադիր չէ:

Եկեք նայենք phpMyAdmin-ում հարցումների մի քանի օրինակ, դրա համար մենք կօգտագործենք նախորդ տվյալների բազան: Կոմպ _ տեխնիկա «. Այս տվյալների բազայում մենք արդեն ստեղծել ենք աղյուսակ « արտադրանք » (արտադրանք), որն արտացոլում էր կազմակերպության համապատասխան հատկությունները. արտադրանք_ ID (առաջնային բանալին ), պատրաստող (արտադրող ), մոդել (մոդել ), Աստված_ ստեղծված (ստեղծման տարին ) ևտիպ_ ID (ապրանքի տեսակը, օտար բանալի է ) (տես նկ.1):

Նաև այս տվյալների բազայում մենք ավելացրել ենք ևս մեկ միավոր « նոութբուք » (ապրանքի տեսակը), որն արտացոլում էր կազմակերպության համապատասխան հատկությունները. տիպ_ ID(առաջնային բանալին), տիպ(տեսակ), ՕՀ(օպերացիոն համակարգ), պրոցեսոր(CPU), տեստ(հիշողություն), զվետ(գույն), քաշը(քաշ) և զենա(գին) (տես նկ.2):

Այժմ, նախքան հարցումների կազմմանն անցնելը, անհրաժեշտ է հարաբերություններ հաստատել սուբյեկտների (աղյուսակների) միջև։ Դա անելու համար մենք կաշխատենք աղյուսակի հետ: նոութբուք», մասնավորապես, ընտրեք տարրը « Միացումներ » (տես նկ.3):

Դրանից հետո կբացվի էջ, որտեղ պետք է նշել այն դաշտերը, որոնք պատասխանատու են աղյուսակների փոխհարաբերությունների համար (տե՛ս նկ. 4): Կարող եք նաև կապ հաստատել այլ կերպ՝ օգտագործելով « Դիզայներ » (տես նկ.4)

Այսպիսով, աղյուսակների միջև հարաբերություններ հաստատելով, մենք կարող ենք անցնել հարցումների ստեղծմանը, անցնելով վերևի մենյու: SQL ».

Հայց 1. Ցուցադրել 2012 թվականի թողարկման համար առկա սարքավորումների վերաբերյալ տեղեկատվությունը (տես Աղյուսակ 1):

Աղյուսակ 1

Այս հարցումն իրականացնելու համար մենք օգտագործեցինք օպերատորը ընտրել - դաշտից տեղեկատվություն ցուցադրելու համար պատրաստող (արտադրող ) և մոդել (մոդել ) , -ից - նկարագրել աղյուսակը, որից ցանկանում եք տեղեկատվություն տրամադրել. պրեդիկատ որտեղ – արդյունքների աղյուսակից տողեր ընտրելու պայմանի համար, այսինքն՝ այն վերադարձնում է տվյալները ստեղծման տարով ( Աստված_ ստեղծված) հավասար էր 2012 ; պատվեր կողմից - տվյալների տեսակավորումն ըստ դաշտի պատրաստող (արտադրող ) .

Հայց 2.Ցուցադրել տեղեկատվություն առկա արտադրողների սարքավորումների քանակի մասին (տես Աղյուսակ 2):

աղյուսակ 2

Հետ ունց մեկն է այսպես կոչված ագրեգացիոն գործառույթներ», որը հաշվում է ոչ դատարկ բազմակների թիվը, են հզոր գործիքհարցումներ կառուցելիս, այս դեպքում դուք խմբավորել եք տվյալների ելքը ըստ պատրաստող (արտադրողներ ) .

Հայց 3. Հանել ընդհանուր արժեքըդյուրակիր համակարգիչներ ըստ առկա արտադրողների՝ տեսակավորված ըստ քանակի՝ աճման կարգով (տես Աղյուսակ 3):

Աղյուսակ 3

AT տրված խնդրանքըմեզ անհրաժեշտ են տվյալներ երկու աղյուսակներից, դրա համար մենք պետք է միացնենք աղյուսակները»: արտադրանք «(արտադրանք) և» նոութբուք » (արտադրանքի տեսակը), դա անելու համար օգտագործեք պրեդիկատը միանալ նշելով միացման դաշտերը՝ աղյուսակի հիմնական բանալին նոութբուք . տիպ _ ID և սեղանի արտաքին բանալին արտադրանք . տիպ _ ID . Նկատի ունեցեք նաև, որ երկու կամ ավելի սեղանների հետ աշխատելիս՝ օպերատորում ընտրել, դաշտերը նկարագրելիս անհրաժեշտ է նշել աղյուսակի անվանումը տրված դաշտ, օրինակ նոութբուք . տիպ . գումար , Ինչպես նաեւ հաշվելվերաբերում է " ագրեգացիոն գործառույթներ», որը հաշվարկում է տուպլեքների արժեքների գումարը, մեր դեպքում՝ տեխնիկայի արժեքի գումարը։

Հարցում 4.Առբերեք նոութբուքի տվյալները օպերացիոն համակարգ Windows-8, 25 հազարից ոչ ավելի արժեքով (տես Աղյուսակ 4):

Աղյուսակ 4

Հայց 5.Ցուցադրել արտադրանքի մասին տեղեկությունները. պատրաստող(արտադրող), մոդել(մոդել), տեստ(հիշողություն), պրոցեսոր(պրոցեսոր) և զենա(գին), ըստ կատեգորիայի « տեղավորել «և» ոչ տեղավորել » (տես Աղյուսակ 5):

Աղյուսակ 5

Արդյունք:

Ծրագիր :

Ընտրեք դեպք, երբ (laptop.pamjat = 1000) և (laptop.processor >=2600), այնուհետև «podhodit», այլապես «not podhodit» ավարտվում է որպես itog, product.maker, product.model, laptop.pamjat որպես տեսքt_v_Gb, laptop.processor որպես proc_v_Mgz, laptop.zena արտադրանքից միացեք նոութբուքին laptop.type_ID=product.type_ID, որտեղ laptop.type-ը, ինչպես «l%»-ը, պատվիրեք 1 նիշ, 6

Հետ ասե վերջ - ընտրության պրեդիկատ, որն օգտագործվում է ապրանքը կատեգորիաների բաշխելու համար՝ չափանիշներին համապատասխան: նման "1%" պրեդիկատ է, որն օգտագործվում է տողերը օրինաչափության հետ համապատասխանեցնելու համար: Նախշը տող է, որը կարող է օգտագործել երկու հատուկ նիշ. % «և» _ «, որտեղ» % «համընկնում է ցանկացած տողի (հնարավոր է դատարկ) և « _ ' համապատասխանում է մեկ նիշի, ցանկացած այլ ոչ հատուկ նիշ կարող է համապատասխանել միայն հատուկ նիշերին և իրենց: պատվեր կողմից [ վեր| նկարագրություն] – նախատեսված է հարցման արդյունքները տեսակավորելու համար [աճողական (կանխադրված) | նվազող], տեսակավորումը հնարավոր է ինչպես մեկ դաշտի, այնպես էլ ավելիի համար։

Օպերատոր ԸՆՏՐԵԼ ոչ այլ ինչ է, քան արտահայտություն տվյալների բազայի աղյուսակներից ստացված արդյունքները ստանալու համար: Մենք հարցում ենք կազմում օպերատորի միջոցով ԸՆՏՐԵԼ , և նա, իր հերթին, ավարտելով իր աշխատանքը, վերադարձնում է ստացված տվյալների հավաքածուն։ Այս տվյալները վերադարձվում են աղյուսակի տեսքով, որն իր հերթին կարող է մշակվել հետևյալ հայտարարությամբ ԸՆՏՐԵԼ և այլն:

Մատենագիտություն

  1. Անոտացիա phpMyAdmin-ին [Էլեկտրոնային ռեսուրս] / URL՝ http://php-myadmin.ru/about/notice.html
  2. Տվյալների բազայի հարցումները և դրանց օգտագործումը: Հարցման տեսակները. Ստեղծման տեխնոլոգիա [Էլեկտրոնային ռեսուրս] / URL՝ http://www.yaklass.ru/materiali?mode=cht&chtid=514
  3. Օստրովսկի Ս.Լ. Դպրոցական «կայքի կառուցման» վեբ-ծրագրավորման հիմունքները. Դասախոսություն 5. PHP + MySQL [Text] / S.L. Օստրովսկի // Ինֆորմատիկա. - 2008.-№21.-էջ 2-15

Իրադարձությունների մատյանները համակարգի կարգավիճակը որոշելու և սխալները հայտնաբերելու առաջին և ամենահեշտ գործիքն են: MySQL-ում կան չորս հիմնական տեղեկամատյաններ.

  • սխալների մատյան- ստանդարտ սխալների մատյան, որը հավաքվում է սերվերի շահագործման ընթացքում (ներառյալ մեկնարկը և դադարեցումը);
  • Երկուական գրանցամատյան- տվյալների բազայի փոփոխության բոլոր հրամանների մատյան, որոնք անհրաժեշտ են կրկնօրինակման և կրկնօրինակման համար;
  • Հարցումների ընդհանուր մատյան- հարցումների հիմնական մատյան;
  • Դանդաղ հարցումների մատյան- դանդաղ հարցումների մատյան:

Սխալների մատյան

Այս գրանցամատյանը պարունակում է բոլոր սխալները, որոնք տեղի են ունեցել սերվերի աշխատանքի ընթացքում, ներառյալ կարևորագույն սխալները, ինչպես նաև անջատումները, սերվերի գործարկումը և նախազգուշացումները: Այստեղից պետք է սկսել համակարգի ձախողման դեպքում: Լռելյայնորեն, բոլոր սխալները տպագրվում են վահանակում (stderr), կարող եք նաև սխալներ գրել syslog-ում (կանխադրված է Debian-ում) կամ առանձին log ֆայլում՝

Log_error=/var/log/mysql/mysql_error.log

# Սխալները կգրվեն mysql_error.log-ում

Խորհուրդ ենք տալիս միացված պահել այս գրանցամատյանը արագ սահմանումսխալներ. Եվ հասկանալու համար, թե ինչ է նշանակում այս կամ այն ​​սխալը, MySQL-ն ունի սխալի օգտակար ծրագիրը.

Shell> սխալ 13 64 ՕՀ-ի սխալի կոդը 13. Թույլտվությունը մերժված է ՕՀ-ի սխալի կոդը 64. Մեքենան ցանցում չէ

# Բացատրում է սխալի կոդերի նշանակությունը

Երկուական (նաև երկուական) մատյան

Տվյալների բազան փոխելու բոլոր հրամանները գրանցվում են երկուական մատյանում, որն օգտակար է կրկնօրինակման և վերականգնման համար:

Այն միանում է այսպես.

log_bin = /var/log/mysql/mysql-bin.log expire_logs_days = 5 max_binlog_size = 500M

# Նշում է գտնվելու վայրը, պիտանելիության ժամկետը և առավելագույն չափըֆայլ

Խնդրում ենք նկատի ունենալ, որ եթե դուք չեք պատրաստվում մեծացնել համակարգը և իրականացնել սխալների հանդուրժողականություն, ապա ավելի լավ է չմիացնել երկուական մատյանը: Այն ռեսուրսների ինտենսիվ է և նվազեցնում է համակարգի աշխատանքը:

Հարցումների մատյան

Այս գրանցամատյանը պարունակում է բոլոր ստացված SQL հարցումները, հաճախորդի կապերի մասին տեղեկությունները: Այն կարող է օգտակար լինել ինդեքսի վերլուծության և օպտիմալացման, ինչպես նաև սխալ հարցումների բացահայտման համար.

General_log_file = /var/log/mysql/mysql.log general_log = 1

# Ներառում է գրանցամատյանը և նշում է ֆայլի գտնվելու վայրը

Այն կարող է նաև միացնել/անջատել MySQL սերվերի աշխատանքի ընթացքում.

SET GLOBAL general_log = «ՄԻԱՑՎԱԾ»; SET GLOBAL general_log = «ԱՆՋԱՏՎԱԾ»;

# Դիմելու համար պետք չէ վերագործարկել սերվերը

Դանդաղ հարցումների մատյան

Մատյանն օգտակար է դանդաղ, այսինքն՝ անարդյունավետ հարցումները բացահայտելու համար։ Կարդացեք ավելին այս հոդվածում:

Դիտեք տեղեկամատյանները

Debian-ի (Ubuntu) տեղեկամատյանները դիտելու համար անհրաժեշտ է գործարկել՝

# Սխալների մատյան պոչ -f /var/log/syslog #Հարցման մատյան պոչ -f /var/log/mysql/mysql.log # Դանդաղ հարցումների մատյան tail -f /var/log/mysql/mysql-slow.log

# Եթե տեղեկամատյանները առանձին նշված չեն, դրանք գտնվում են /var/lib/mysql-ում

Մատյանների ռոտացիա

Մի մոռացեք սեղմել (արխիվացնել, պտտել) գրանցամատյանների ֆայլերը, որպեսզի դրանք ավելի քիչ տեղ գրավեն սերվերում: Դա անելու համար օգտագործեք կոմունալը լոգրոտացնելխմբագրելով կազմաձևման ֆայլը /etc/logrotate.d/mysql-server:

# - Ես ամեն ինչ դրեցի մեկ բլոկի մեջ և ավելացրեցի համօգտագործվող սկրիպտներ, որպեսզի mysql-ը միայն մեկ անգամ ստանա # flush-logs"d։ # - Սխալների մատյանը հնացած է, հաղորդագրություններն այժմ գնում են syslog:/var/log/mysql.log /var/log/mysql/mysql.log /var/log/mysql/mysql-slow.log( օրական պտտել 7 missingok ստեղծել 640 mysql adm սեղմել sharedscripts postrotate test -x /usr/bin/mysqladmin || ելք 0 # Եթե դա չհաջողվի, ստուգեք debian.conf-ը: MYADMIN="/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf" if [ -z "`$MYADMIN ping 2>/dev/null`" ]; ապա # Իսկապե՞ս չկա mysqld կամ ավելի շուտ բացակայող debian-sys-maint օգտվող: # Եթե դա տեղի է ունենում և սխալ չէ, խնդրում ենք հայտնել սխալի մասին: #եթե ps cax | grep -q mysqld; ապաեթե killall -q -s0 -umysql mysqld; ապա դուրս եկեք 1 ֆայլից, այլ $MYADMIN flush-logs fi endscript )

# Սեղմում և արխիվացնում է անհրաժեշտ տեղեկամատյանները, մաքրում ֆայլերը

DDL մատյան

MySQL-ը նաև պահում է տվյալների նկարագրության լեզվի մատյան: Այն հավաքում է տվյալներ այնպիսի գործողություններից, ինչպիսիք են DROP_TABLE և ALTER_TABLE: Գրանցամատյանը օգտագործվում է նման գործողությունների ընթացքում տեղի ունեցած ձախողումներից վերականգնելու համար: DDL Log-ը երկուական ֆայլ է, որը նախատեսված չէ օգտագործողի կողմից կարդալու համար, այնպես որ մի փոփոխեք կամ ջնջեք այն:

Ամենակարևորը

Միշտ միացրեք սխալների գրանցումը, օգտագործեք հարցումների մատյանը՝ հավելվածի կապը տվյալների բազայի հետ ստուգելու, հարցումները ստուգելու և աշխատելու համար: Դանդաղ հարցումների մատյանը օգտակար է MySQL-ի կատարողականը օպտիմալացնելու համար:

Հարց. ms sql հարցումների պատմություն


Ինչպե՞ս դիտել հարցումների պատմությունը (ջնջել, թարմացնել...):

Պատասխան.
profiler-ը ամենադանդաղ աուդիտն է, որը կարելի է պատկերացնել: Ընդլայնված իրադարձությունները կարող են հարմարեցվել ձեր կարիքներին, և այն կարող է նաև վերբեռնվել և այլն, բայց այս տարբերակներից որևէ մեկը պահանջում է ռեսուրսներ:

Հարց՝ կատարման պատմություն


Հուշել, արդյոք հնարավո՞ր է MS SQL-ում ինչ-որ տեղ փնտրել, թե ով և ինչ հարցումներ է կատարվել կոնկրետ DB-ում:

Պատասխան. iluxa1810, այս տեղեկատվությունը հասանելի է միայն մասամբ։ Փորձեք այնպիսի հարցում, ինչպիսին է՝

T-SQL կոդը
1 2 3 4 SELECT deqs.last_execution_time AS [ Time ] , dest.TEXT AS [ Query] FROM sys.dm_exec_query_stats AS deqs CROSS APPLY sys.dm_exec_sql_text (deqs.sql_handle ) AS deqs.

Հարցումների ամբողջական պատմության համար դուք պետք է գրանցվեք կամ օգտագործեք կոմունալ ծառայություններ, ինչպիսիք են SQL Profiler-ը:

Հարց. Sql հարցում՝ տվյալների բազայում նախկին արժեքները վերադարձնելու համար


Բարեւ բոլորին!

Խնդրում եմ, կարո՞ղ եք ինձ ասել, թե ինչպես վերադարձնել նախավերջին պատվերի կարգավիճակները տվյալների բազայում որոշակի ամսաթվից սկսած բոլոր պատվերներում:

Միգուցե ինչ-որ sql հարցում կա կամ գուցե ինչ-որ սցենար... Ես շատ շնորհակալ կլինեմ:

Ծրագրավորողը մի փոքր չտեսավ իմ պահեստի հետ ինտեգրվելիս, և բոլոր պատվերները փոխեցին իրենց կարգավիճակը այն մեկին, որը գտնվում էր ինտեգրման մոդուլի կարգավորումներում և չգիտի, թե ինչպես վերադարձնել այն:

Նրանք անմիջապես չնկատեցին, և շատ ուշ էր վերականգնել տվյալների բազայի հին պատճենը: Խանութում արդեն կան նոր պատվերներ։

Պատասխան. Պոետիկ,
InnoDB-ն կարող է պահել հարցումների պատմությունը:

բաշ
1 ~/.mysql_history

Գլորեք վերջին կրկնօրինակը և կրկնեք հրամանները
Դե, ընդհանուր առմամբ, յուրաքանչյուր ինտեգրումից առաջ դուք պետք է կրկնօրինակեք, և նույնիսկ ավելի լավ, փորձարկեք այն թեստային սերվերի վրա

Հարց. sql հարցում մի քանի աղյուսակներից որոնելիս


Բարի օր. Խնդրում եմ, օգնեք ինձ հասկանալ՝ կարո՞ղ եմ դա անել, թե՞ պետք է վերափոխել տվյալների բազան, թե՞ այդպիսի որոնում հնարավոր չէ իրականացնել:
Ես գրում եմ delphi rad xe10-ով։
Ես գրում եմ աշխատողի մասին տեղեկատվությունը մեկ տողով Workers աղյուսակում, մեկ տող հագուստի չափսերով և նրան տրված պատմությունը (շատ տողեր, և տարբերությունը միայն ID_rab-ում է):

Ես ուզում եմ որոնում անել
որպեսզի ազգանունով կամ ներդիրի համարով պահանջելիս ինձ տրվի հետևյալը՝
Աշխատողի մասին dbgrid1-ի առաջին ներդիրից,
դրա չափերը dbgrid2-ի երկրորդ աղյուսակից
և այս աշխատողի հետ կապված պատմությունը աղյուսակ 3-ից (կարող են լինել շատ տողեր, որոնք տարբերվում են միայն ID_rab-ով) dbgrid3-ում

Առաջին աղյուսակում.

երկրորդում՝

SQL
1 2 3 4 5 6 7 8 9 10 11 CREATE TABLE Size ( ID_razmOdejdi INT NOT NULL IDENTITY (1 , 1 ) , հագուստ VARCHAR (4 ) , ID_rab INT , PRIMARY KEY (ID_razmOdejdi) , ԱՐՏԱՔԻՆ ԲԱՆԱԼԻ (ID_rab) Հղումներ աշխատողներ,)

երրորդում՝

SQL
1 2 3 4 5 6 7 8 9 10 11 ;

Կատարե՞լ միանգամից 3 ADOQuery տարբեր հարցումներով:
Ես չգիտեմ, թե ինչպես դա անել, որ այն ելքի տեղեկատվություն մեկ այլ աղյուսակից, որը պատկանում է առաջինին
Եթե ​​դա հնարավոր լիներ անել. ես մուտքագրեցի մարդուն որոնման մեջ և գտա նրան և իր ID_rab-ով կգտնեի տեղեկատվություն այլ աղյուսակներում և միևնույն ժամանակ կցուցադրեի այն 3 տարբեր dbgrid-ներում:

Պատասխան.

Հաղորդագրություն Ռոգզար

Եվ եթե դուք ամբողջությամբ ջնջեք աշխատակցի մասին բոլոր տեղեկությունները, նրա չափը, պատմությունը և ենթադրվում է, որ դա կարելի է անել մեկ հարցման միջոցով:

Եթե ​​դուք միացնեք կասկադային ջնջումը Employees աղյուսակում, ապա դրանում տող ջնջելը կջնջի տվյալները ենթակա աղյուսակներից: Հակառակ դեպքում, դուք ստիպված կլինեք կատարել մի քանի DELETE հարցումներ:

Ավելացվել է 14 ժամ 31 րոպե հետո
Նման կոդը խոցելի է անունների հարձակումների համար: Դուք պետք է օգտագործեք հարցումներ պարամետրերով:

Հարց. Մեկ խնդրանք, իսկապե՞ս:


Բարի օր, պարոնայք:
Խնդրում եմ, ասեք ինձ, թե ինչպես լուծել հետևյալ խնդիրը...
Կան երեք աղյուսակներ՝ ապրանքներ (դրանք իսկապես քիչ են, ինչ-որ տեղ մոտ 60-80 հատ), վաճառքի պատմություն և մնացորդներ ...

AT պարզեցվածկառուցվածքը հետևյալն է.
իրեր:
id
Անուն

պատվերի_պատմություն:
id
s_ամսաթիվ
good_id
գինը

հավասարակշռություն:
id
s_ամսաթիվ
order_id
հաշվել

Բոլոր երեք աղյուսակները կապված են ID-ով (goods.id - order_history.good_id, order_history.id - balance.order_id):
Խնդիրն է ստանալ բոլոր ապրանքների ընդհանուր մնացորդը ցանկացած կամայական ամսաթվի համար: Այսինքն՝ յուրաքանչյուր ապրանքի համար ես պետք է մնացորդից և վաճառքի պատմությունից ստանամ ամենամոտ ամսաթվի ռեկորդը (մնացորդից, համապատասխանաբար, քանակից, վաճառքի պատմությունից՝ գինը):

Հասկանալի է, որ դուք կարող եք պտտել բոլոր ապրանքները ID-ով և կատարել SQL հարցում յուրաքանչյուր կրկնության մեջ, բայց ինչ-որ կերպ դա ... ինձ դուր չի գալիս այս տարբերակը: :) Առաջադրանքը նրբագեղ լուծելու հնարավորություն կա՞՝ մեկ խնդրանք։

Ես շնորհակալ կլինեմ ցանկացած գաղափարի համար:

Պատասխան.Ես հակացուցումներ չեմ տեսնում։ Եթե ​​կառուցվածքը կարգի բերեք.

Հիմարություն։
Տվյալների բազայում որոշ ավելորդություն է մտցվել
Նա չափազանց շատ է քեզ համար: Ավելին, դա պոտենցիալ հակասական է։ Ես չեմ տեսնում որևէ սահմանափակում, որը կարող է ինձ խանգարել հաշվեկշռում նոր գրառում կատարել, որպեսզի քանակական այս և նախորդ գրառումների միջև տարբերությունը չհամապատասխանի նույն ժամանակահատվածի պատվերի_պատմության ընդհանուր քանակին:

Հարց. Ենթահղում, օգնեք միավորել մի քանի պարզ


Բարի օր! Ես շատ շնորհակալ կլինեմ օգնության համար)) Ես երկար ժամանակ է, ինչ խելքներս խառնում եմ։
Մի քիչ պատմություն. Նրանց հետ կապված URL-ով հարցումների մի խումբ կա, նպատակը URL-ների որոշ ցանկի համար համընկնող հարցումներ թողարկելն է, որը նույնպես որոշվում է հարցումով:

Եվ այսպես, կան մի քանի հարցումներ, որոնք կատարվում են հերթականությամբ.
$sql2 = Ընտրեք url-ը ցուցակից WHERE `group` = "1" AND `proekt`= "1" GROUP BY url ORDER BY COUNT(*) DESC LIMIT 3 - սքրինշոթ
Ես ընտրում եմ URL-ների ցանկը 3 կտորի չափով, այնուհետև դրանք հավաքում եմ հայտի համար

$return=զանգված();
$maxcount=mysql_query ($sql2);
while ($url = mysql_fetch_array ($maxcount)) (
$return = $url;
}
foreach ($return as $url1) ( //հավաքել url-ների շարանը Muscle-ի համար զանգվածից
if ($frag2==0) ( $urls = "`url`=".""".$url1."""; $frag2=1; ) else $urls .= " OR `url` = "". $url1.""";
}

Այս դեպքում $urls = `url` = "http://www.MosDance.com/" ԿԱՄ `url`="http://raisky.com/" և այլն:

Ես ցուցադրում եմ այս url-ների հետ կապված ստեղների ցանկը
ընտրել «բանալին» -ից (SELECT `key` , COUNT(*) AS total FROM ցուցակից WHERE `group` = "1" AND `proekt`= "1" AND (."$urls.") GROUP BY "Block" ORDER «ԸՆԴԱՄԵՆԸ» DESC-ով) որպես t2 ՈՐՏԵՂ t2.total >=3

Իրականում հիմնական հարցն այն է, թե ինչպես նվազեցնել այս բիզնեսը: Ինչպե՞ս ճիշտ հավաքել url-ը, որպեսզի կարողանաս ազատվել php crutch script-ից, որը հավաքում է url-ը ճիշտ հերթականությամբ և անել այդ ամենը, օրինակ, տվյալների բազայի մեկ հարցումով: ընդհանրապես, ինչպե՞ս ստանալ վերջնական արդյունք մեկ խնդրանքից ավելի խելացի, քան իմ հենակները:

Պատասխան.

Լավ օր!
Երբեք մի գրեք COUNT(*): COUNT(`id`) ավելի լավ կլիներ:
Նաև մի գրեք RAND(*): Ավելի լավ է գրել, իհարկե, այլ կերպ՝ դրանցում կան մեկնաբանություններ, գործառույթներ և նման դեպք։
Բոլոր վերը նշված մեթոդները տվյալների բազայից գրառումներ ընտրելու համար մեծապես բեռնում են mysql սերվերը: Եթե, իհարկե, տվյալների բազայում չունեք 30 հազար գրառում, դա ձեզ համար այդքան ցավալի չի լինի։

Հարցման վերաբերյալ.
Փորեք դեպի ՆԵՐՔԻՆ ՄԻԱՑՈՒՄ: Կամ գցեք ինձ ձեր սեղանի աղբը, ես կօգնեմ ձեզ, եթե առաջադրանքը ավելի մանրամասն ասեք, քանի որ այն, ինչ ես կարդացել եմ, շատ ծույլ է խորանալ ամբողջ պանրի բորի մեջ =)

-----
- Ծրագրավորման դասեր այստեղ: Հետաքրքիր չիպսեր նույնպես կան =)

Հարց. Հարցում երկու աղյուսակից մի քանի չափանիշներով


Բարի երեկո!

Խնդրում եմ օգնեք ինձ հետևյալ հարցումով.
1. Գործարքների աղյուսակ կա՝ դաշտերով՝ արժույթի անվանումը, ամսաթիվը, փոխարժեքի տեսակը և այլ դաշտեր
2. Տարադրամի փոխարժեքների պատմությունը դաշտերում կա աղյուսակ՝ արժույթի անվանումը, ամսաթիվը, փոխարժեքի տեսակը, փոխարժեքը:

Հարցումը պետք է կազմվի առաջին աղյուսակի բոլոր դաշտերի և գրառումների հիման վրա, իսկ երկրորդ աղյուսակի փոխարժեքը: Ավելին, պետք է համապատասխանեն ընտրության բոլոր 3 չափանիշներին՝ արժույթի անվանումը, ամսաթիվը և փոխարժեքի տեսակը:

Շնորհակալ եմ նախապես!

Պատասխան.
Հարցման կոնստրուկտորում ձեզ ավելի հարմարավետ կզգաք:

Ես հասկացա, թե ինչպես կարելի է ներքին ուրախություն ստեղծել SQL-ի միջոցով, առաջին հայացքից դա պարզ է: Բայց մի հարց կա.
1. Գործարքների աղյուսակում կա «Գործարքի տեսակ» դաշտը
2. Հարցումը, որը ես անում եմ, առաջին հերթին դուրս է բերվում գործարքների աղյուսակի «Փոխարժեքի տեսակը» աղյուսակի յուրաքանչյուր գրառման համար «Գործարքների տեսակները» աղյուսակից:
3. Հարցումը աղյուսակից հանվում է դրույքաչափերով՝ համաձայն 2-րդ կետում ստացված «Դասընթացի տեսակ» չափանիշի:

Այսինքն՝ սկզբում 2 աղյուսակները (գործարքները և գործարքների տեսակները) միավորվում են, իսկ հետո՝ հաշվին. ընդհանուր տեղեկությունԴրանց ավելացվում են «Արժույթի փոխարժեքներ» աղյուսակի տվյալները:

Հարց. Պարզեք, թե աղյուսակից որ գրառման վրա է հարցումը ձախողվում


Ես հանդիպեցի մի իրավիճակի, երբ փաստերի աղյուսակի հարցումը սխալ է վերադարձնում, բայց ես չեմ կարող որսալ գրացուցակի այն գրառումները, որոնք հանգեցնում են սխալի (հարցը ամսաթվերում է)
Հարցումն ինքնին վերադարձնում է բոլոր գրառումները փաստերի աղյուսակից, գումարած որոնումից հաշվարկված դաշտը: Եթե ​​որոնումը ճիշտ լրացված լիներ, ենթահարկը կվերադարձներ մեկ արժեք փաստերի աղյուսակի գրանցման համար: Բայց իրականում սխալի գրառումների գրացուցակում, որը ես չեմ կարող բռնել:
Միգուցե դուք ինչ-որ կերպ կարող եք տեսնել, թե փաստերի աղյուսակի որ գրառման վրա է տեղի ունենում սխալը:

Պատասխան.Զվարճալի չէ. Վաղուց էր (բառացի).
Դե, հենց զառանցանքի դետեկտորը աշխատեց, նա անմիջապես վազեց... Ի՞նչ կա:
Նախքան հերոսաբար սուպեր-խնդրանքներ գրելը (բոլոր առիթների համար), դուք պետք է միացնեք ձեր ուղեղը, լավ, գոնե մի քանի րոպե ...
Դե, անձամբ քո «տառապանքը» լրիվ բավական էր մի խելահեղ խնդրանքի համար, որի տեղը աղբաման է։
Եվ դուք «թռչել եք հողաթափեր» միայն դրա իմաստաբանության և շարահյուսության համար ...
Լավ միտք!
Եվ երբ կարող եք, հանեք այն դարակից (լավ, համենայն դեպս!) և «սովորեք, սովորեք և սովորեք» (գ): Կա հաստատ ա կիսվելովԽՄԲԵԼ ԵՎ ՈՒՆԵՑՈՂ...

Հարց. ծրագրեր պրոֆիլավորման հարցումների համար


Ողջույններ:

Ասա ինձ, թե ով է (ծրագրեր, IDE և այլն) օգտագործում հարցումները վերլուծելու համար, մասնավորապես, նրանք հետաքրքրված են հարցումների վերլուծության գործիքներով՝ դրանք օպտիմալացնելու համար։ Որտեղ կարող եք տեսնել հարցման պլանը՝ հարցումների ինդեքսներ, Ամբողջական սկանավորում և այլն:

11) | Ամսաթիվ | Ամսաթիվ | վարորդի_անունը | ՎԱՐՃԱՐ(100) | տոկոս | INT (11) | գումար_ստացված_հաճախորդից | ՏԱՍՆԱԿԱՆԱԿԱՆ (9 , 2 ) | գումարի_սակագինը_վարորդի համար | ՏԱՍՆԱԿԱՆԱԿԱՆ (9 , 2 ) | գումարի_վճարված | ՏԱՍՆԱԿԱՆԱԿԱՆ (9 , 2 ) | վճարովի_կարգավիճակ | tinyint(1) | տոկոս_ընկերություն | INT (11)

«Paid_status» դաշտը պահում է վճարման կարգավիճակը: Անհրաժեշտ է այնպիսի հարցում, ինչպիսին է.

ստանալ բոլոր տվյալները: Այն պետք է լինի այսպես, եթե «paid_status = 1», ապա «summa_for_payed» դաշտում գտնվող թվի փոխարեն միշտ ստացեք «0»:

Եթե ​​հարցման մեջ ավելացնեմ «եւ վճարովի_կարգավիճակը ոչ «1»-ի նման», կստացվի, որ այս տողի ելքը ընդհանրապես չի ստացվի, բայց պետք է ամեն ինչ ստանալ, միայն թե «summa_for_payed» դաշտն արդեն փոխված է, կախված «payed_status» վիճակից

Ավելացվել է 25 րոպե հետո
Ավելացնեմ, անհրաժեշտ է նաև, որ որոշակի ամսաթվի sum(summa_for_payed) հրամանով հարցման ժամանակ ստանալ գումարը՝ նկատի ունենալով «paid_status» դաշտի արժեքը, ավելի ճիշտ՝ «payed_status = 1»: , ապա «summa_for_payed» դաշտերը դիտարկվել են «0» չափով, եթե «paid_status = 1»

Պատասխան.Այո, ես այդպես մտածեցի, բայց խնդիրն այն է, որ եթե ես զրոյացնեմ գիծը, և եթե սխալ օգտագործող է ընտրվել, ապա ես չեմ կարողանա վերադարձնել այն, քանի որ նրա հին պարտքը ջնջվել է, ուստի ես պարզապես մտածել այս ցուցանիշի մասին և որոշել վճարումը և անհրաժեշտության դեպքում նորից վերադարձնել նրան՝ տեսնելով նրա պարտքի չափը։ Դե, ընդհանրապես, լավ կլիներ, որ պատմությունը տեսներ իր պարտքը, որ փակել էր։

Ավելացվել է 34 րոպե հետո
Հարգելի գուրուներ.
Ես գտա, թե ինչ կարելի է անել

SQL
1 SELECT SUM (IF (`payed_status` = 1 , 0 , `summa_for_payed` ) ) FROM mytable-ից

Ես մի քանի խնդրանք եմ արել, կարծես թե այն է, ինչ ինձ պետք է, բայց կարո՞ղ եք ասել, որոգայթներ չկան նման խնդրանքի մեջ, սա այն է, ինչ ինձ պետք է: Պե՞տք է դա անեմ, թե՞ այլ լուծումներ փնտրեմ: Սա այն վայրն է, որտեղ ձգանները գալիս են մտքում: միգուցե նրանց հետ? Ի՞նչ խորհուրդ կտաք։ Մտածեցի նաև արժեքները փոխելու մասին, եթե 0-ն ապա վճարված է, եթե 1-ը, ապա ոչ, և հետո թիվը ցուցիչով բազմապատկելու ընտրության մեջ, իսկ եթե այն զրո է, ապա ես պարզապես ստանում եմ զրո: եթե մեկը, ապա ես ստանում եմ համարը ինքնին: պարզապես հավելյալ հաշվարկներ... Ձեր կարծիքը?