MYSQL选择少行

时间:2015-04-21 13:34:01

标签: mysql select insert

我正在为一个单元创建一个数据库,我需要一个查询,选择分配较少约会的兽医,这样我就可以为他或她分配下一个约会。我不知道如何开始,但我很确定我必须在这里使用变量。那些是我的桌子:

CREATE TABLE IF NOT EXISTS staff (

    stafId MEDIUMINT UNSIGNED AUTO_INCREMENT,
    stafAdd VARCHAR(150) NOT NULL,
    stafConNum VARCHAR(15) NOT NULL,
    stafEma VARCHAR(40) NOT NULL,
    stafFirNam VARCHAR(20) NOT NULL,
    stafLasNam VARCHAR(30) NOT NULL,
    stafPos ENUM('nurse', 'vet') NOT NULL,

    PRIMARY KEY (stafId)

) engine = InnoDB;

CREATE TABLE IF NOT EXISTS vet (

    vetId MEDIUMINT UNSIGNED AUTO_INCREMENT,
    FOREIGN KEY (vetId) REFERENCES staff(stafId),

    PRIMARY KEY (vetId)

) engine = InnoDB;

CREATE TABLE IF NOT EXISTS appointment (

    appoId MEDIUMINT UNSIGNED AUTO_INCREMENT,
    appoDat DATETIME NOT NULL,
    appoPetId MEDIUMINT UNSIGNED,
    FOREIGN KEY (appoPetId) REFERENCES pet(petId),
    appoVetId MEDIUMINT UNSIGNED,
    FOREIGN KEY (appoVetId) REFERENCES vet(vetId),

    PRIMARY KEY (appoId)

) engine = InnoDB;

3 个答案:

答案 0 :(得分:0)

您应该首先查找mysql MIN()函数。通过了解JOIN来了解这一点,你就可以轻松过关了。

答案 1 :(得分:0)

你可以通过这样的约会来获得兽医:

SELECT
    *
FROM
(
    SELECT
        vet.vetId,
        COUNT(*) AS nbrOfAppointment
    FROM
        vet
        JOIN appointment
            ON vet.vetId = appointment.appoVetId
) AS tbl
ORDER BY tbl.nbrOfAppointment ASC

答案 2 :(得分:0)

此请求为您提供按命令数量排序的每位兽医的任命数量。

Select vet.id, count(*) as nb_appointement 
from vet
inner join appointement app on vet.vetId = app.appoVetId 
group by vet.id
order by nb_appointement asc