შეკითხვები mysql-ში php mysqli შეკითხვიდან. მოთხოვნების დამატება (Power Query)

მავნებლები სახლში 19.07.2023
მავნებლები სახლში

Შენიშვნა:ზედნაშენი Power Queryშემოთავაზებული Excel 2016-ში ბრძანებების ჯგუფად ჩამოტვირთეთ და გადააკეთეთ. ამ სტატიაში მოცემული ინფორმაცია ეხება როგორც Power Query-ს, ასევე ახალ ჯგუფს. დამატებითი ინფორმაციისთვის იხილეთ ჩამოტვირთვა და კონვერტაციის ფუნქცია Excel 2016-ში.

Power Query ოპერაციაში დამატებაქმნის ახალ მოთხოვნას, რომელიც შეიცავს პირველი მოთხოვნის ყველა მწკრივს, შემდეგ კი მეორე მოთხოვნის ყველა მწკრივს.

უსაფრთხოების შენიშვნა: კონფიდენციალურობის დონეებითავიდან აიცილოთ მონაცემების შემთხვევითი შერწყმა მრავალი წყაროდან, რომელიც შეიძლება იყოს კერძო ან ორგანიზაციული. ზოგიერთი მოთხოვნის გამოყენებისას, მომხმარებელმა შეიძლება უნებლიედ გაგზავნოს მონაცემები პირადი მონაცემთა წყაროდან სხვა მონაცემთა წყაროზე. თავდამსხმელებს შეუძლიათ ისარგებლონ ამ შესაძლებლობით. Power Query აანალიზებს მონაცემთა თითოეულ წყაროს და განსაზღვრავს მის მგრძნობელობის დონეს: საჯარო, ორგანიზაციულ და კერძო. კონფიდენციალურობის დონის შესახებ დამატებითი ინფორმაციისთვის იხილეთ კონფიდენციალურობის დონეები.

დამატების შესრულება

შეგიძლიათ შეასრულოთ ორი ტიპის დამატების ოპერაცია: შუალედური დამატებაან inline დანართი. გამოყენება შუალედური დამატებაყოველი დამატების ოპერაციისთვის იქმნება ახალი მოთხოვნა. ზე inline დანართითქვენ უმატებთ მონაცემებს არსებულ მოთხოვნას, სანამ არ მიაღწევთ საბოლოო შედეგს. შედეგი არის ახალი ნაბიჯი მიმდინარე მოთხოვნის ბოლოს.

Inline დამატება

შუალედური დამატება


Იხილეთ ასევე:

Შენიშვნა: შეკითხვის რედაქტორიხილული იქნება მხოლოდ ახალი მოთხოვნის გამოყენებისას ჩატვირთვის, რედაქტირების ან შექმნისას Power Query. ვიდეო აჩვენებს ფანჯარას შეკითხვის რედაქტორირომელიც გამოჩნდება Excel-ის სამუშაო წიგნში შეკითხვის რედაქტირების შემდეგ. სანახავად შეკითხვის რედაქტორისამუშაო წიგნში, განყოფილებაში არსებული მოთხოვნის ჩატვირთვის ან შეცვლის გარეშე გარე მონაცემების მიღებალენტის ჩანართზე Power Queryაირჩიეთ სხვა წყაროებიდან > ცარიელი მოთხოვნა. ვიდეოში ნაჩვენებია ჩვენების ერთ-ერთი მეთოდი შეკითხვის რედაქტორი.

".
შესაძლოა, მოსკოვის ოფისის ბიჭებს დრო არ აქვთ, ასე რომ, რაც შემდეგში იქნება უფასო თარგმანი Query Language Reference (ვერსია 0.7).
Google Visualization API. შეკითხვის ენა (ვერსია 0.7)
Google Visualization API-ის შეკითხვის ენა საშუალებას გაძლევთ მანიპულირება მოახდინოთ მონაცემებით მოთხოვნის საშუალებით მონაცემთა წყარომდე.

როგორც წესი, ვიზუალიზაცია მოითხოვს მონაცემების წარმოდგენას რაიმე კონკრეტული ფორმით. მაგალითად, ტორტი დიაგრამა მოითხოვს ორ სვეტს: ტექსტის ეტიკეტი და რიცხვითი მნიშვნელობა. მონაცემთა წყარო შეიძლება არ შეესაბამებოდეს ამ სტრუქტურას. ის შეიძლება შეიცავდეს მეტ სვეტს, ან მათი თანმიმდევრობა განსხვავდება დიაგრამისთვის საჭიროსგან.
შეკითხვის ენა საშუალებას გვაძლევს დავასტრუქტუროთ მონაცემები ისე, როგორც ჩვენ გვჭირდება შედეგის მისაღწევად.
შეკითხვის ენის სინტაქსი SQL-ის მსგავსია. ისინი, ვინც დახელოვნებულია SQL-ის გამოყენებაში, შეძლებენ სწრაფად დაეუფლონ შეკითხვის ენას. სინტაქსის განყოფილება ასახავს განსხვავებებს ამ ენებში.
გაითვალისწინეთ, რომ ვიზუალიზაციისთვის ყოველთვის არ არის საჭირო შეკითხვის ენის გამოყენება. მის გამოსაყენებლად საჭიროა საფუძველი. შინაარსამდე.

შეკითხვის ენის გამოყენება

თქვენ შეგიძლიათ დაამატოთ შეკითხვის სტრიქონი მონაცემთა წყაროს ორი გზით: JavaScript კოდიდან ან პარამეტრის სახით მონაცემთა წყაროს ბმულზე. თუ თქვენი ბმული არ შეიცავს მოთხოვნის პარამეტრებს, მაშინ ნაგულისხმევად მთელი მონაცემთა ნაკრები ბრუნდება. თქვენ შეგიძლიათ შეცვალოთ ეს ნაკრები მოთხოვნის მორგებით თავად მონაცემთა წყაროსთან.

თუ იყენებთ QUERY ფუნქციას Google Sheets-ში, შეგიძლიათ გამოტოვოთ შემდეგი პუნქტები და გადახვიდეთ შემდეგ ნაწილზე.

მოთხოვნის დაყენება JavaScript-დან

JavaScript კოდიდან მოთხოვნის სტრიქონის დასაყენებლად, თქვენ უნდა გამოიძახოთ მეთოდი setQueryკლასი google.visualization.Query.
var query = new google.visualization.Query(DATA_SOURCE_URL);
query.setQuery("აირჩიე განყოფილება, ჯამი(ხელფასი) ჯგუფი განყოფილების მიხედვით");
query.send(handleQueryResponse);

შეკითხვის სტრიქონი მონაცემთა წყაროს შეიძლება დაემატოს პარამეტრის გამოყენებით ტქ. ამ გზით, შესაძლებელია გამოიყენოთ ვიზუალიზაცია, რომელიც დაწერილია სხვა დეველოპერების მიერ, თქვენი მონაცემთა ნაკრების უბრალოდ კორექტირებით.
მოთხოვნის სტრიქონი სწორად უნდა იყოს კოდირებული, როგორც URL პარამეტრი. შეგიძლიათ გამოიყენოთ JavaScript ფუნქცია კოდირების URIკომპონენტიკოდირებისთვის ან გააკეთეთ ეს ხელით განყოფილების ბოლოს ხელსაწყოს გამოყენებით.
მაგალითი
მოდით შევხედოთ Google Sheet-ის მოთხოვნის მაგალითს (გახსოვდეთ, რომ სვეტების იდენტიფიკატორები ყოველთვის ასოებია. სვეტების სახელები გამოქვეყნებისას არ არის იდენტიფიკატორები. ეს არის სვეტების იდენტიფიკატორები, რომლებიც უნდა იქნას გამოყენებული მოთხოვნაში)
კოდირების შემდეგ მოთხოვნა ასე გამოიყურება:
აირჩიეთ%20A%2C%20sum(B)%20ჯგუფი%20%20A
დავუშვათ, რომ მონაცემთა ცხრილის მისამართი ასეთია:
http://spreadsheets.google.com/a/google.com/tq?key=ABCDE
მოდით დავამატოთ მოთხოვნის პარამეტრი &tq=YOUR_QUERY_STRINGგადადით ცხრილის ბმულზე და მიიღეთ მზა მოთხოვნის სტრიქონი
http://spreadsheets.google.com/a/google.com/tq?key=ABCDE&tq=select%A%2C%20sum(B)%20group%20by%20A

ენის სინტაქსი

Მიმოხილვა

ჩემი შეკითხვის ენა ძალიან ჰგავს SQL-ს. თუმცა, არსებობს გარკვეული მახასიათებლები, რომლებიც უნდა იქნას გათვალისწინებული.
მონაცემთა ცხრილი
ეს დოკუმენტი წარმოგიდგენთ "მონაცემთა ცხრილის" კონცეფციას შეკითხვის შედეგებზე მითითებისთვის. ცხრილი შედგება სტრიქონებისა და სვეტებისგან. თითოეულ სვეტს აქვს შემდეგი თვისებები:
  • იდენტიფიკატორი (ან სვეტის ID). გამოიყენება ცხრილის სვეტებისთვის. გთხოვთ გაითვალისწინოთ, რომ თქვენ მხოლოდ უნდა მიუთითოთ სვეტი მისი იდენტიფიკატორის მიხედვით. ხრიკი: შეეცადეთ არ გამოიყენოთ შუალედები იდენტიფიკატორებში, ამან შეიძლება გამოიწვიოს სირთულეები მოთხოვნის რედაქტირებაში. გარდა ამისა, ყველა იდენტიფიკატორი ინტერვალით უნდა იყოს ჩასმული უკანა ციტატებში.
  • ლეიბლი. ეს არის სტრიქონი, რომელიც, როგორც წესი, ნაჩვენებია საბოლოო მომხმარებლებისთვის. მაგალითად, ლეგენდა წრიულ დიაგრამაში ან სათაური ცხრილის სქემაში. არ გამოიყენება QUERY() ფუნქციისთვის Google Sheets-ში.
  • მონაცემთა ტიპები. მხარდაჭერილია მონაცემთა შემდეგი ტიპები: სტრიქონი, რიცხვი, ლოგიკური, თარიღი, თარიღი, დრო დღე. სვეტის ყველა მნიშვნელობა იქნება ამ სვეტის მონაცემთა ტიპი ან null. მონაცემთა ეს ტიპები ძალიან ჰგავს JavaScript ტიპებს, მაგრამ არა იდენტური. ისინი აღწერილია ლიტერატურის განყოფილებაში.
  • შაბლონების ფორმატირება. მონაცემთა ცხრილებს შეუძლიათ ყველა ან ზოგიერთი სვეტის ფორმატირების შაბლონების მხარდაჭერა. ისინი აღწერილია ფორმატირების განყოფილებაში.
მონაცემთა ცხრილი, რომელიც გამოიყენება ყველა მაგალითში
ამ დოკუმენტის მაგალითები იყენებს ცხრილს შემდეგი მონაცემებით და სვეტების ტიპებით:
სახელი
სიმებიანი
განყოფილება
სიმებიანი
ლანჩის დრო
დღის მონაკვეთი

ხელფასი
ნომერი

აყვანის თარიღი
თარიღი
ასაკი
ნომერი
უფროსია
ლოგიკური
ხანდაზმულობა დაწყების დრო
თარიღის დრო
იოანე ინჟ 12:00:00 2005-03-19 35 მართალია 2007-12-02 15:56:00
დეივ ინჟ 12:00:00 2006-04-19 27 ყალბი null
სალი ინჟ 13:00:00 2005-10-10 30 ყალბი null
ბენ Გაყიდვების 12:00:00 2002-10-10 32 მართალია 2005-03-09 12:30:00
დანა Გაყიდვების 12:00:00 2004-09-08 25 ყალბი null
მაიკ მარკეტინგი 13:00:00 2005-01-10 24 მართალია 2007-12-30 14:40:00

ენის ოპერატორები

შეკითხვის ენა შედგება შემდეგი ერთი ან ორსიტყვიანი განცხადებებისგან. ოპერატორები უნდა მიჰყვნენ ერთმანეთს ცხრილში ნაჩვენები თანმიმდევრობით:
ოპერატორი გამოყენება
აირჩიეთ ირჩევს რომელი სვეტები დაბრუნდება და რა თანმიმდევრობით. თუ ოპერატორი გამოტოვებულია, ცხრილის ყველა სვეტი დაბრუნდება.
აბრუნებს ცხრილის მხოლოდ იმ სტრიქონებს, რომლებიც ემთხვევა მდგომარეობას. თუ ოპერატორი გამოტოვებულია, ცხრილის ყველა სტრიქონი დაბრუნდება.
ით დაჯგუფება აჯგუფებს მნიშვნელობებს მწკრივის მიხედვით.
ღერძი გარდაქმნის უნიკალურ მნიშვნელობებს სვეტებში ახალ სვეტებად, კრებსითი ცხრილის მსგავსი.
შეკვეთით ახარისხებს რიგებს მნიშვნელობებზე დაყრდნობით.
ზღვარი ადგენს ლიმიტს იმ მწკრივებზე, რომლებიც დაბრუნდება.
ოფსეტური გამოტოვებს მწკრივების მითითებულ რაოდენობას გამოსავალიდან.
ეტიკეტი აყენებს სუბტიტრებს სვეტებისთვის.
ფორმატი აფორმებს მნიშვნელობებს მითითებულ სვეტებში ფორმატირების შაბლონების მიხედვით.
პარამეტრები აყენებს დამატებით ვარიანტებს.
საწყისი საწყისი ოპერატორი არ გამოიყენება.
აირჩიეთ
Select განცხადებაში მითითებულია, რომელი სვეტები უნდა დაბრუნდეს და რა თანმიმდევრობით. თუ ოპერატორი არ არის მითითებული, ან აირჩიეთ * მითითებულია, ცხრილის ყველა სვეტი დაბრუნდება თავდაპირველი თანმიმდევრობით. სვეტების მითითება შესაძლებელია იდენტიფიკატორების მეშვეობით, მაგრამ არა ლეიბლის საშუალებით. Google Sheets-ის იდენტიფიკატორები არის ერთი ან ორი ასო სვეტის სახელები (A, B, C, ..., AC, ..., DC, ...).
ოპერატორის პარამეტრები შეიძლება იყოს სვეტის იდენტიფიკატორები, აგრეგატული ფუნქციები, სკალარული ფუნქციები ან არითმეტიკული ოპერატორები.
მაგალითები:
აირჩიეთ *
აირჩიეთ დეპარტამენტი, ხელფასი
აირჩიეთ მაქსიმუმი (ხელფასი)
ელექტრონული მისამართითარიღი):

ჩვენ ვიღებთ შედეგს:
ლანჩის დრო სახელი
12:00:00 იოანე
12:00:00 დეივ
13:00:00 სალი
12:00:00 ბენ
12:00:00 დანა
13:00:00 მაიკ
სადაც განცხადება გამოიყენება მხოლოდ იმ რიგების დასაბრუნებლად, რომლებიც აკმაყოფილებს პირობებს.
მარტივი შედარების ოპერატორები გამოიყენება პირობების აღსაწერად<=, <, >, >=, =, !=, <>. ორივე ოპერატორი !=,<>ნიშნავს არ უდრის. სტრიქონები შედარებულია მათი ლექსიკოგრაფიული მნიშვნელობით. შენიშვნა, თანასწორობა მოწმდება = ოპერატორის მეშვეობით და არა ==-ის მეშვეობით, როგორც ბევრ ენაში. null-თან შედარება კეთდება მეშვეობით არის null და არ არის null. Google Sheets-ში QUERY()-ის გამოყენებისას, როგორც წესი, სტრიქონის ველს აქვს ცარიელი მნიშვნელობა და არა null .
თქვენ შეგიძლიათ დააკავშიროთ მრავალი პირობა ლოგიკური ოპერატორების გამოყენებით და, ან, არა. ფრჩხილები გამოიყენება აშკარა პრიორიტეტის დასადგენად.

Where განცხადება ასევე იყენებს დამატებით ოპერატორებს უფრო რთული სტრიქონების შედარების შესასრულებლად. ეს ოპერატორები იღებენ ორ არგუმენტს, რომლებიც უნდა იყოს სტრიქონები, ნებისმიერი არასტრიქონი არგუმენტი (თარიღი, ნომერი) გარდაიქმნება სტრიქონად შედარების წინ. შედარება არის რეგისტრირებული (ამ ფუნქციის გასამარტივებლად, გამოიყენეთ სკალარული ფუნქციები upper(), lower()).
შეიცავს - ემთხვევა ქვესტრინგს. გამოთქმა დაბრუნდება true, თუ სტრიქონის ნაწილი მთლიანად ემთხვევა მოცემულ არგუმენტს - ქვესტრიქონს. მაგალითად, სადაც სახელი შეიცავს "ჯონ" დაბრუნდება "ჯონი", "ჯონ ადამსი", "ლონგ ჯონ სილვერი"მაგრამ არა "ჯონ ადამსი".

მაგალითები:
აირჩიეთ *
აირჩიეთ დეპარტამენტი, ხელფასი
აირჩიეთ მაქსიმუმი (ხელფასი)
შემდეგი მაგალითი გვიჩვენებს იდენტიფიკატორის მითითებების გამოყენებას ინტერვალით ( ელექტრონული მისამართი) და იდენტიფიკატორებზე, რომლებიც შეესაბამება დაცული სიტყვების სახელებს ( თარიღი):
აირჩიეთ `ელფოსტის მისამართი`, სახელი, `თარიღი`
მოდით გამოვიყენოთ შემდეგი მოთხოვნა მაგალითის ცხრილზე:
ჩვენ ვიღებთ შედეგს:
ლანჩის დრო სახელი
12:00:00 იოანე
12:00:00 დეივ
13:00:00 სალი
12:00:00 ბენ
12:00:00 დანა
13:00:00 მაიკ

ამ სტატიაში ჩვენ ვისწავლით მონაცემთა ბაზის მოთხოვნების გაგზავნა PHP-ით. ეს სტატია ძალიან მნიშვნელოვანია და თქვენ უნდა გესმოდეთ. თუმცა, დაგამშვიდებთ - მასალა ძალიან მარტივია, ამიტომ სირთულეები არ უნდა იყოს.

სანამ სტატიის თემაზე გადავიდოდე, წინასწარ გაფრთხილებ, რომ დეტალურად არ გავაანალიზებ SQL ენა. ყველა საჭირო ინფორმაცია დალაგებულია მიძღვნილ კატეგორიაში, მაგრამ ჩვენ მხოლოდ აქ MySQL-თან მუშაობა PHP-ის საშუალებით.

ახლა გადავიდეთ მონაცემთა ბაზის შეკითხვის გაგზავნა PHP-ში:


}
$mysqli->query("INSERT INTO mytable (სახელი, ელფოსტა) VALUES ("MyName", " [ელფოსტა დაცულია]")");
$mysqli->close();
?>

ამ მაგალითში ჩვენ დავუკავშირდით მონაცემთა ბაზას, შევამოწმეთ კავშირის წარმატება და გავგზავნეთ მოთხოვნა მეთოდის გამოყენებით შეკითხვა ()და შემდეგ დახურეთ კავშირი. როგორც ხედავთ, ყველაფერი ძალიან მარტივია. ნებისმიერის გასაგზავნად SQL მოთხოვნებისაკმარისია მხოლოდ ერთი მეთოდი - შეკითხვა ()მაშასადამე, შიგნით ამ შემთხვევაშიყველაფერი საოცრად მარტივია.

ახლა ცოტა გავართულოთ დავალება. მოდით შევხედოთ შეკითხვებს, რომლებიც ბრუნდება შედეგი_კომპლექტი- შედეგი. ყველაზე პოპულარული მოთხოვნა დაბრუნების შედეგი_კომპლექტიარის მონაცემების შერჩევა ცხრილიდან. შემდეგ მაგალითში ჩვენ შევარჩევთ მონაცემებს და შემდეგ ვაჩვენებთ შედეგს:

$mysqli = @new mysqli ("localhost", "Admin", "pass", "mybase");
if (mysqli_connect_errno()) (
echo "დაკავშირება ვერ მოხერხდა: ".mysqli_connect_error();
}
$result_set = $mysqli->
ხოლო ($row = $result_set->fetch_assoc()) (
print_r ($ row);
ექო"
";
}
$result_set->close();
$mysqli->close();
?>

პირველ რიგში, ნება მომეცით აგიხსნათ ცოტა რა არის ეს. შედეგი_კომპლექტი. შედეგი_კომპლექტი- ეს არის ცხრილი შედეგით. ამ ცხრილს აქვს ჩანაწერების ნაკრები (ცხრილის რიგები). და ყველა ჩანაწერის საჩვენებლად, თქვენ უნდა გაიმეოროთ ცხრილის თითოეულ რიგში და აჩვენოთ იგი. ახლა კი ავხსნი მაგალითით: მოთხოვნის გაგზავნის შემდეგ, ჩვენ ვაგენერირებთ შედეგი_კომპლექტი. შემდეგ ცვლადს ვანიჭებთ ციკლში რიგიშემდეგი ხაზის მნიშვნელობა, ანუ ერთგანზომილებიანი მასივი, რომელსაც მეთოდი აბრუნებს fetch_assoc(). როდესაც ყველა ხაზი დასრულდა, მეთოდი fetch_assoc()დაბრუნდება ყალბი, და მარყუჟი გამოვა. მარყუჟის შიგნით ხოლოჩვენ უბრალოდ გამოვიყვანთ მასივს გამართვის ფუნქციის გამოყენებით print_r(), თუმცა, რა თქმა უნდა, ამის დადგენა შესაძლებელია გამოყენებით foreach, მაგრამ ახლა ეს არ არის საჭირო.

მოკლედ შევაჯამოთ როგორ ვიმუშაოთ შედეგი_კომპლექტი:

  1. მიიღეთ შედეგი_კომპლექტიმონაცემთა ბაზაში შესაბამისი მოთხოვნის გაგზავნით.
  2. მარყუჟში, ყოველი გამეორებისას, მიანიჭეთ შემდეგი მწკრივი (ჩანაწერი). შედეგი_კომპლექტიმეთოდის გამოყენებით fetch_assoc()ზოგიერთი ცვლადი რიგი. შემდეგ შეგიძლიათ ამ ცვლადთან მუშაობა, როგორც ერთგანზომილებიანი ასოციაციური მასივი, რომელშიც კლავიშები არის ცხრილის ველების სახელები, ხოლო მნიშვნელობები შეესაბამება მიმდინარე ჩანაწერს.
  3. აუცილებლად დახურეთ შედეგი_კომპლექტიმეთოდი დახურვა ()რესურსების დაცლას.

როგორც შენიშნეთ, მეთოდი fetch_assoc()ყოველთვის აბრუნებს შემდეგ ჩანაწერს. ანუ ჯერ 1-ლი, მერე მე-2, მერე მე-3 და ასე შემდეგ. თუ თქვენ გაქვთ კარგი პროგრამირების გამოცდილება, მაშინ დაუყოვნებლივ გამოიცნობთ, რომ ეს ხდება შიდა მაჩვენებლის წყალობით, რომლის გადატანა, რა თქმა უნდა, შეგიძლიათ. სად გამოიყენება? მაგალითად, ეს შეიძლება გამოყენებულ იქნას, როდესაც გჭირდებათ მუშაობა შედეგი_კომპლექტიარა 1 , ა 2 და მეტჯერ. იმავე მოთხოვნის ხელახლა გენერირების თავიდან ასაცილებლად, შეგიძლიათ უბრალოდ გადაიტანოთ კურსორი დასაწყისში. და შემდეგ შეგიძლიათ კვლავ დაიწყოთ უხეში ძალა შედეგი_კომპლექტი fetch_assoc() მეთოდის გამოყენებით.

არსებობს მაჩვენებლის პოზიციის შეცვლის მეთოდი data_seek(), რომელიც იღებს მთელ რიცხვს 0 ადრე " ჩანაწერების რაოდენობა - 1", შესაბამისად, მაჩვენებელი მოთავსებულია პარამეტრის შესაბამის ჩანაწერზე:

$mysqli = @new mysqli ("localhost", "Admin", "pass", "mybase");
if (mysqli_connect_errno()) (
echo "დაკავშირება ვერ მოხერხდა: ".mysqli_connect_error();
}
$result_set = $mysqli->query("SELECT * FROM mytable");
$result_set->num_rows;
ხოლო ($row = $result_set->fetch_assoc()) (
print_r ($ row);
ექო"
";
}
$result_set->data_seek(0);
ხოლო ($row = $result_set->fetch_assoc()) (
print_r ($ row);
ექო"
";
}
$result_set->close();
$mysqli->close();
?>

ამ მაგალითში გვაქვს გამომავალი ჩანაწერების რაოდენობა result_set-შიქონების გამოყენებით რიგების_რაოდენობა. მეთოდსაც გავეცანით data_seek(). ანუ, ჩვენ გავიმეორეთ მთელი შედეგი, შემდეგ დავაბრუნეთ მაჩვენებელი 0ჩაწერა და ისევ გაიარა შედეგი.

ამ სტატიაში ჩვენ გავიმეორეთ მონაცემთა ბაზასთან დაკავშირება და კავშირის დახურვა. და ასევე გაირკვა როგორ მოვითხოვოთ მონაცემთა ბაზა PHP-ის საშუალებით. Ისწავლა, როგორ მივიღოთ result_setდა როგორ ვიმუშაოთ მასთან. ეს არის ყველაფერი, რაც თქვენ უნდა იცოდეთ წარმატების მისაღწევად MySQL-თან მუშაობა PHP-ში.

ვფიქრობ, ყველას სმენია პარეტოს წესის შესახებ. ნებისმიერ სფეროში, ძალისხმევის 20% იძლევა 80% შედეგს. მაგალითად, თქვენ ატარებთ თქვენი გარდერობის 20%-ს 80%-ში, თქვენი კლიენტების 20%-ს მოაქვს თქვენი შემოსავლის 80%. იგივეა Google Sheets-ში: არსებული ფუნქციების 20%-ის ცოდნით, თქვენ შეგიძლიათ გადაჭრათ ყველა შესაძლო პრობლემის 80%.

მე ვთვლი, რომ Query არის Google Sheets-ის ერთ-ერთი ყველაზე სასარგებლო ფუნქცია. მაგრამ Google Help აღწერს მას ძალიან ზედაპირულად და ამ ფუნქციის სრული ძალა არ არის გამოვლენილი. უფრო დეტალური შემოწმების შემდეგ ირკვევა, რომ მას შეუძლია შეცვალოს არსებული ფუნქციების უმეტესობა.

QUERY-თან მუშაობისთვის დაგჭირდებათ SQL-ის საბაზისო ცოდნა. მათთვის, ვინც არ იცის, არ ინერვიულოთ, QUERY ფუნქცია რეალურად მხარს უჭერს ძალიან ძირითად SQL ფუნქციებს.

QUERY სინტაქსი

QUERY(მონაცემები; მოთხოვნა; [სათაურები])
  • მონაცემები— ეს არის უჯრედების დიაპაზონი, რომელიც იქნება მონაცემთა ბაზა SQL შეკითხვისთვის;
  • მოთხოვნა— SQL შეკითხვის ტექსტი;
  • სათაურებიარის არჩევითი არგუმენტი, რომელშიც შეგიძლიათ მიუთითოთ მასივის პირველი რიგის რამდენი შეიცავს სათაურებს.

დამატებითი ინფორმაციის მაქსიმალური აღქმის მიზნით, გირჩევთ გახსნათ და დააკოპიროთ შემდეგი Google Sheet

არის რამდენიმე ფურცელი dox-ში, რომლის ასლი ახლახან შექმენით. DB ფურცელი არის მონაცემთა ბაზა, რომელსაც ჩვენ მივიღებთ QUERY ფუნქციის გამოყენებით. დონის ფურცლები შეიცავს მაგალითებს, რომლებსაც განვიხილავთ ამ სტატიაში. ყოველ ახალ დონეზე მაგალითი უფრო გართულდება.

SQL შეკითხვის გეგმა შეკითხვის ფუნქციაში

ნებისმიერი SQL მოთხოვნა შედგება ცალკეული ბლოკებისგან, რომლებსაც ხშირად ცილისწამებას უწოდებენ. SQL შეკითხვის ფუნქციისთვის იყენებს Google Visualization API შეკითხვის ენის სინტაქსს, რომელიც მხარს უჭერს შემდეგ პუნქტებს:

  • აირჩიეთ— ველების ჩამოთვლა, რომლებიც დაბრუნდება მოთხოვნით;
  • სადაც— შეიცავს პირობების ჩამონათვალს, რომლითაც მოხდება მოთხოვნით დამუშავებული მონაცემთა მასივის გაფილტვრა;
  • ით დაჯგუფება— შეიცავს ველების ჩამონათვალს, რომლითაც გსურთ შედეგების დაჯგუფება;
  • საყრდენი— ეხმარება ჯვარედინი ჩანართების აგებას ერთი სვეტის მნიშვნელობის გამოყენებით, როგორც საბოლოო ცხრილის სვეტების სახელები;
  • შეკვეთით— პასუხისმგებელია შედეგების დახარისხებაზე;
  • ზღვარი- მოთხოვნის ამ ნაწილით შეგიძლიათ დააწესოთ ლიმიტი მოთხოვნის მიერ დაბრუნებული მწკრივების რაოდენობაზე;
  • ოფსეტური— ამ ცილისწამების გამოყენებით, შეგიძლიათ დააყენოთ პირველი სტრიქონების რაოდენობა, რომლებიც არ საჭიროებს დამუშავებას მოთხოვნით;
  • ეტიკეტი— ეს ცილისწამება პასუხისმგებელია მოთხოვნით დაბრუნებული ველების სახელზე;
  • ფორმატი- პასუხისმგებელია გამომავალი მონაცემების ფორმატზე;
  • პარამეტრები -შესაძლებელს ხდის მონაცემთა გამომავალი დამატებითი პარამეტრების დაყენებას.

Hello World for Query (Select) ფუნქცია

მოდით გადავიდეთ Level_1 ფურცელზე და გადავხედოთ ფორმულას A1 უჯრედში.

შეკითხვა (DB!A1:L1143;"აირჩიეთ * ლიმიტი 100")

ფორმულის ნაწილი " DB!A1:L1143"პასუხისმგებელია მონაცემთა ბაზაზე, საიდანაც ჩვენ გავაკეთებთ სინჯს. Მეორე ნაწილი " აირჩიეთ * ლიმიტი 100“ შეიცავს თავად მოთხოვნის ტექსტს. სიმბოლო "*" ამ შემთხვევაში ნიშნავს მონაცემთა ბაზაში არსებული ყველა ველის დაბრუნებას. Გამოყენებით " ლიმიტი 100» ჩვენ ვზღუდავთ გამომავალს მაქსიმუმ 100 ხაზამდე. ეს არის უმარტივესი მოთხოვნის მაგალითი. ჩვენ შევარჩიეთ პირველი 100 სტრიქონი მონაცემთა ბაზიდან. ეს არის ერთგვარი "Hello world" Query ფუნქციისთვის.

ჩვენ ვიყენებთ ფილტრებს და დახარისხებას (სად, შეკვეთით)

გადადით ფურცელზე Level_2. მოდით ავირჩიოთ მხოლოდ რამდენიმე ჩვენთვის საჭირო ველი და დავაყენოთ ფილტრაციის და დახარისხების პირობები. მაგალითად, ჩვენ ვიყენებთ მონაცემებს მხოლოდ Campaign_1 და Campaign_2 კამპანიებისთვის 2015 წლის 22-25 ოქტომბრის პერიოდისთვის. მოდით დავახარისხოთ ისინი კლებადობით სესიების რაოდენობის მიხედვით. გასაფილტრად და დასალაგებლად, თქვენ უნდა დაამატოთ ცილისწამების აღწერა მოთხოვნის ტექსტში სადდა შეკვეთა. ზემოთ აღწერილი მაგალითის გამოსატანად მიღებულ ცხრილში, ჩვენ გვჭირდება ველები კამპანია, თარიღი და სესიები. ისინი არიან, ვინც ცილისწამებაში უნდა იყოს ჩამოთვლილი აირჩიეთ.

მონაცემთა ბაზის ველებზე წვდომა ხდება სამუშაო ფურცლის სვეტების სახელების მეშვეობით, რომლებზეც განთავსებულია მონაცემთა ბაზა.

ჩვენს შემთხვევაში, DB ფურცელზე განთავსებული მონაცემები და წვდომა გარკვეულ ველებზე იწერება, როგორც ფურცლის სვეტების სახელწოდება. ამრიგად, საჭირო ველები განლაგებულია შემდეგ სვეტებში:

  • ველი თარიღი- სვეტი A;
  • ველი კამპანია- სვეტი B;
  • ველი სესიები- სვეტი G.

შესაბამისად, მოთხოვნის ის ნაწილი, რომელიც პასუხისმგებელია შედეგად მონაცემების ჩამონათვალზე, ასე გამოიყურება:

აირჩიეთ A, B, G

მოთხოვნაში შემდეგი არის ცილისწამება სად. მოთხოვნის დაწერისას, ცილისწამება უნდა განთავსდეს იმ თანმიმდევრობით, როგორც ეს იყო აღწერილი ამ სტატიის პირველ ნაწილში. განცხადების შემდეგ სადჩვენ უნდა ჩამოვთვალოთ ფილტრაციის პირობები. ამ შემთხვევაში, ჩვენ ვფილტრავთ მონაცემებს კამპანიის სახელით (კამპანია) და თარიღით (თარიღი). ჩვენ ვიყენებთ რამდენიმე ფილტრაციის პირობას. მოთხოვნის ტექსტი უნდა შეიცავდეს ლოგიკურ ოპერატორს OR ან AND ყველა პირობას შორის. თარიღების მიხედვით ფილტრაცია ოდნავ განსხვავდება ციფრული და ტექსტური მნიშვნელობებით გაფილტვრისგან; ის მოითხოვს თარიღის ოპერატორის გამოყენებას. მოთხოვნის ნაწილი, რომელიც პასუხისმგებელია მონაცემთა გაფილტვრაზე, ასე გამოიყურება:

WHERE (A >= თარიღი"2015-10-22" და ა<= date"2015-10-25") AND (B = "Campaign_1" OR B = "Campaign_2")

ფრჩხილების გამოყენებით, ჩვენ დავყავით მონაცემთა ფილტრაცია ორ ლოგიკურ ნაწილად: პირველი ფილტრები თარიღების მიხედვით, მეორე ფილტრები კამპანიის სახელწოდებით. ამ ეტაპზე, ფორმულა, რომელიც აღწერს შერჩეულ მონაცემებს და მონაცემთა ფილტრაციის პირობებს, ასე გამოიყურება:

შეკითხვა(DB!A1:L1143;" აირჩიეთ A, B, G WHERE (A >= თარიღი"2015-10-22" და A<= date"2015-10-25") AND (B = "Campaign_1" OR B = "Campaign_2")")

თქვენ შეგიძლიათ დააკოპიროთ და ჩასვათ ის, მაგალითად, დოკუმენტის ახალ ფურცელზე, რომელიც გამოიყენება ამ პოსტის მაგალითზე და მიიღეთ შემდეგი შედეგი:

ჩვეულებრივი ლოგიკური ოპერატორების გარდა (=,<, >) WHERE ბლოკი მხარს უჭერს დამატებით ფილტრაციის ოპერატორებს:

  • შეიცავს— ამოწმებს გარკვეული სიმბოლოების შინაარსს სტრიქონში. მაგალითად, WHERE A შეიცავს 'John' დააბრუნებს ფილტრში A სვეტის ყველა მნიშვნელობას, რომელიც შეიცავს John, მაგალითად, John Adams, Long John Silver;
  • იწყება- ფილტრავს მნიშვნელობებს პრეფიქსით, ანუ ამოწმებს სიმბოლოებს ხაზის დასაწყისში. მაგალითად, "en"-ით დაწყებული დააბრუნებს მნიშვნელობებს საინჟინრო და ინგლისურს;
  • მთავრდება— ფილტრავს მნიშვნელობებს სტრიქონის ბოლოს. მაგალითად, ხაზი 'კოვბოი დაბრუნდება "ბოლოებით "ბიჭი" ან "ბოლოება "y"-ით;
  • მატჩები- ემთხვევა რეგულარულ გამონათქვამს. მაგალითად: სადაც ემთხვევა ‘.*ია დააბრუნებს ღირებულებებს ინდოეთი და ნიგერია.
  • მოსწონს -რეგულარული გამონათქვამების გამარტივებული ვერსია, ის ამოწმებს, შეესაბამება თუ არა სტრიქონი მოცემულ გამონათქვამს, სიმბოლოების გამოყენებით. ამჟამად, like მხარს უჭერს ორ სიმბოლოს: "%" ნიშნავს სტრიქონში ნებისმიერი სიმბოლოს ნებისმიერ რაოდენობას და "_" ნიშნავს ნებისმიერ სიმბოლოს. მაგალითად, "სადაც სახელი, როგორიცაა "fre%"" შეესაბამება ხაზებს 'უფასო ’, ფრედ და ფრედი ’.

მოთხოვნამ უკვე გაფილტრა მონაცემები გარკვეული პერიოდის განმავლობაში და დატოვა მხოლოდ ჩვენთვის საჭირო კამპანიები. რჩება მხოლოდ შედეგის დახარისხება კლებადობით, სესიების რაოდენობის მიხედვით. ამ შეკითხვებში დახარისხება ტრადიციულად ხორციელდება SQL-ისთვის ცილისწამების გამოყენებით შეკვეთით. სინტაქსი საკმაოდ მარტივია: თქვენ მხოლოდ უნდა ჩამოთვალოთ ველები, რომლებითაც გსურთ შედეგის დახარისხება და ასევე მიუთითოთ დახარისხების თანმიმდევრობა. ნაგულისხმევი თანმიმდევრობა არის asc, ანუ აღმავალი. თუ თქვენ მიუთითებთ desc პარამეტრს ველის სახელის შემდეგ, მოთხოვნა დააბრუნებს შედეგს ცილისწამებაში მითითებულის კლებადობით. შეკვეთითველები.

ჩვენს შემთხვევაში, მოთხოვნის ტექსტის ხაზი პასუხისმგებელია გაფილტვრაზე:

შეკვეთა G desc

შესაბამისად, Level_2 ფურცელზე ფორმულის საბოლოო შედეგი, რომელიც წყვეტს ჩვენთვის საჭირო პრობლემას, ასე გამოიყურება:

შეკითხვა(DB!A1:L1143;" SELECT A, B, G WHERE (A >= date"2015-10-22" AND A<= date"2015-10-25") AND (B = "Campaign_1" OR B = "Campaign_2") ORDER BY G DESC")

ახლა თქვენ შეგიძლიათ გამოიყენოთ მარტივი SQL სინტაქსი და QUERY ფუნქცია მონაცემების გასაფილტრად და დასალაგებლად.

რესურსი mysql_query(სტრიქონის მოთხოვნა [, რესურსის ბმული_იდენტიფიკატორი])

mysql_query ()აგზავნის მოთხოვნას აქტიური სერვერის მონაცემთა ბაზაში, რომელიც მითითებულია გავლილი მაჩვენებლით. თუ link_identifier გამოტოვებულია, გამოიყენება ბოლო ღია კავშირი. თუ არ არის ღია კავშირები, ფუნქცია ცდილობს დაუკავშირდეს DBMS-ს, ფუნქციის მსგავსი mysql_connect ()პარამეტრების გარეშე. შეკითხვის შედეგი ბუფერულია.

კომენტარი:მოთხოვნის სტრიქონი არ უნდა დასრულდეს მძიმით.

მხოლოდ არჩევისთვის, ჩვენებისთვის, ახსნისთვის, აღწერისთვის, mysql_query ()აბრუნებს მაჩვენებელს მოთხოვნის შედეგს, ან ცრუთუ მოთხოვნა არ შესრულდა.
სხვა შემთხვევებში (ჩასმა, განახლება, წაშლა, ვარდნა და ა.შ.), mysql_query ()ბრუნდება მართალიწარმატებული მოთხოვნის შემთხვევაში და ცრუშეცდომის შემთხვევაში. ღირებულება არ არის თანაბარი ცრუმიუთითებს, რომ მოთხოვნა წარმატებით დასრულდა. ის არ ასახელებს დაზარალებული ან დაბრუნებული რიგების რაოდენობას. სავსებით შესაძლებელია, რომ წარმატებულმა მოთხოვნამ გავლენა არ მოახდინოს ერთ რიგზე.

შემდეგი მოთხოვნა არასწორად არის ჩამოყალიბებული და mysql_query ()დაბრუნდება ცრუ :

mysql_query ()ასევე ითვლება მცდარი და დაბრუნდება ცრუ, თუ არ გაქვთ საკმარისი უფლებები მოთხოვნაში მითითებულ ცხრილთან მუშაობისთვის.

შეკითხვის შედეგებთან მუშაობისას შეგიძლიათ გამოიყენოთ ფუნქცია mysql_num_rows() SELECT მოთხოვნით დაბრუნებული ნომრის საპოვნელად, სტრიქონების ან mysql_affected_rows()რომ იპოვოთ DELETE, INSERT, REPLACE ან UPDATE მოთხოვნებით დამუშავებული რიგების რაოდენობა.

მხოლოდ შეკითხვებისთვის SELECT, SHOW, DESCRIBE, EXPLAIN, ფუნქცია mysql_query ()აბრუნებს მაჩვენებელს შედეგზე, რომელიც შეიძლება გამოყენებულ იქნას ფუნქციაში mysql_fetch_array ()და სხვა ფუნქციები, რომლებიც მუშაობენ შეკითხვის შედეგებთან. როდესაც დაასრულებთ შედეგზე მუშაობას, შეგიძლიათ გაათავისუფლოთ რესურსები, რომლებიც გამოიყენება მის შესანახად ფუნქციის გამოყენებით



ჩვენ გირჩევთ წაიკითხოთ

ზედა