Программно разрешение экрана изменения?

Обратите внимание, что MySQL является фантастически плохим использованием представлений, поэтому, на мой взгляд, они не служат никакой полезной цели.

Вместо этого рассмотрим следующее:

DROP TABLE IF EXISTS colors;

CREATE TABLE colors
(colorId SERIAL PRIMARY KEY
,colorName VARCHAR(12) NOT NULL UNIQUE
);

INSERT INTO colors VALUES
(11,'Blu'),
(12,'Green'),
(13,'Yellow'),
(14,'Red');

DROP TABLE IF EXISTS color_groups;

CREATE TABLE color_groups
(colorsGroupId SERIAL PRIMARY KEY
,colorsGroupName CHAR(2) NOT NULL UNIQUE
);

INSERT INTO color_groups VALUES
(101,'BG'),
(102,'BY'),
(103,'RB');       

DROP TABLE IF EXISTS colors_groups_ids;

CREATE TABLE colors_groups_ids
(colorsGroupId INT NOT NULL
,colorId INT NOT NULL
,colorOrder INT NOT NULL
,PRIMARY KEY(colorsGroupId,colorid)
);

INSERT INTO colors_groups_ids VALUES
(101,11,1),
(101,12,2),
(102,11,1),
(102,13,2), -- note: fixed the error in the original data set
(103,14,1),
(103,11,2);

DROP TABLE IF EXISTS book_covers;

CREATE TABLE book_covers
(bookId INT NOT NULL
,colorsGroupId INT NOT NULL
,PRIMARY KEY(bookid,colorsgroupid)
);

INSERT INTO book_covers VALUES
(1001,101),
(1001,102),
(1002,102);

SELECT b.bookid
     , GROUP_CONCAT(DISTINCT x.colorsgroupid ORDER BY x.colorsgroupid) colorsgroupids
     , GROUP_CONCAT(DISTINCT x.colorsgroupname ORDER BY x.x.colorsgroupid) colorgroupname
  FROM book_covers b
  JOIN 
     ( SELECT g.colorsgroupid
            , CONCAT(g.colorsgroupname,' (',GROUP_CONCAT(c.colorname ORDER BY gc.colororder SEPARATOR '/' ),')') colorsgroupname 
         FROM color_groups g
         JOIN colors_groups_ids gc
           ON gc.colorsgroupid = g.colorsgroupid
         JOIN colors c
           ON c.colorid = gc.colorid
        GROUP
           BY g.colorsgroupid
            , g.colorsgroupname
     ) x
    ON x.colorsgroupid = b.colorsgroupid
  GROUP
     BY b.bookid;
+--------+----------------+--------------------------------+
| bookid | colorsgroupids | colorgroupname                 |
+--------+----------------+--------------------------------+
|   1001 | 101,102        | BG (Blu/Green),BY (Blu/Yellow) |
|   1002 | 102            | BY (Blu/Yellow)                |
+--------+----------------+--------------------------------+

Наконец, как видно, этот запрос использует CONCAT и GROUP_CONCAT. Однако, если не использовать некоторые другие функции агрегирования (SUM / MAX / AVG), я думаю, что лучше обрабатывать подобные вещи в коде приложения.

18
задан jacobsee 18 October 2008 в 18:46
поделиться

2 ответа

Можно использовать EnumDisplayDevices для выяснения то, что отображается, Вы имеете в наличии и EnumDisplaySettings для получения списка доступных разрешений для дисплеев. Используйте ChangeDisplaySettings для установки разрешения, в котором Вы нуждаетесь.

27
ответ дан 30 November 2019 в 08:33
поделиться

Да, но не часть.NET. Необходимо будет использовать, вызвать или записать обертку для доступа к API Win32.

См. ChangeDisplaySettings и связанная функция.

Здесь можно найти основной пример.

3
ответ дан 30 November 2019 в 08:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: