Πώς ονομάζεται η κατασκευή WITH ... AS (...) στη γραμμή 84 του ερωτήματος;
Golang
Από την άποψη της απόδοσης, ποιους γενικά αποδεκτούς κανόνες πρέπει να εφαρμόσουμε σε ένα τέτοιο σχήμα βάσης δεδομένων;
Γιατί οι προγραμματιστές του Go δεν εγγυώνται τη σειρά διαδρομής του χάρτη κατά τη διάρκεια του range;
-- εμφάνιση της λίστας βιβλίων ταξινομημένης κατά id, -- αλλά στην έξοδο αντεστρέψτε τις γραμμές 2 και 3: -- 1 Ο Δάσκαλος και η Μαργαρίτα 100 -- 3 Ο Χρυσός Τελένοκ 50 -- 2 Δώδεκα καρέκλες 200 -- 4 Ευγένιος Ονέγκιν 250 -- 5 Ιστορίες του Μπελκίν 90 -- 6 Οι τρεις σωματοφύλακες 60
// GetUsersList επιστρέφει μια λίστα χρηστών. (στη βάση δεδομένων αποθηκεύουμε περίπου 1 εκατομμύριο χρήστες) // Χρησιμοποιείται για την εμφάνιση της λίστας χρηστών στον πίνακα διαχείρισης. Αν isActive = true, επιστρέφονται μόνο ενεργοί χρήστες. func (u *UsersRepo) GetUsersList(ctx context.Context, isActive bool) ([]User, error) { rows, err := u.DB.Query("SELECT id, name, phone FROM users WHERE is_active = ?", isActive) if err != nil { return nil, errors.New("σφάλμα κατά την λήψη της λίστας χρηστών") } var users []User // Συμπληρώστε πληροφορίες σχετικά με τους χρήστες. for rows.Next() { var user User err := rows.Scan(&user.ID, &user.Name, &user.Phone) if err != nil { return nil, err } // Λάβετε τη λίστα email του χρήστη err, err := u.DB.QueryContext(ctx, "SELECT email FROM user_emails WHERE user_id = ?", user.ID) if err != nil { return nil, errors.New("σφάλμα κατά την λήψη της λίστας χρηστών") } var emails []string for er.Next() { var email string err := rows.Scan(&email) if err != nil { return nil, err } emails = append(emails, email) } if len(emails) != 0 { for i, e := range emails { e = strings.ToLower(e) emails[i] = e } } user.Emails = emails // Λάβετε πληροφορίες προφίλ από το API του VKontakte profile, err := getUserProfileFromVkApiByUserPhone(user.Phone) if err != nil { return nil, errors.New("σφάλμα κατά την λήψη της λίστας χρηστών") } user.Profile = profile users = append(users, user) } if err = rows.Err(); err != nil { return nil, errors.New("σφάλμα κατά την λήψη της λίστας χρηστών") } }