2

我有一个 MariaDB 数据库。

    #Create table room
create table if not exists room
(
  pk_roomNumber   INTEGER PRIMARY KEY NOT NULL,
  roomdescription VARCHAR(50),
  netmask         VARCHAR(15),
  subnetmask      VARCHAR(15)
);

#Create table client
CREATE TABLE IF NOT EXISTS client
(
  pk_macaddr       VARCHAR(17) PRIMARY KEY NOT NULL,
  ipadress         VARCHAR(15),
  hostname         VARCHAR(50),
  fk_pk_roomnumber INTEGER,
  last_seen        DATE,
  is_online        BOOLEAN
);


ALTER table client
  ADD CONSTRAINT pk_fk_roomnumber
    FOREIGN KEY fk_pk_roomnumber (fk_pk_roomnumber)
      REFERENCES room (pk_roomNumber);

我正试图找到 131 房间里的每一位客户。

我目前正在尝试使用此查询

select hostname, pk_macaddr, ipadress, roomdescription, fk_pk_roomnumber from client,room
WHERE fk_pk_roomnumber AND fk_pk_roomnumber = '131';

我的数据库中有 160 个客户,我将它们分成 4 个房间,每个房间有 40 个客户,但是当我开始查询时,我得到了所有 160 个客户。我的查询哪里错了?

问候,卢卡斯

4

2 回答 2

0

你有一个错误的加入条件..(在你的代码中你没有加入两个表)

select c.hostname, c.pk_macaddr, c.ipadress, r.roomdescription, r.fk_pk_roomnumber 
from client c
INNER JOIN room r ON c.fk_pk_roomnumber =  r.pk_roomnumber
  and r.pk_roomnumber  = '131';

并且您应该使用 explicti join sintax (而不是基于 where 的 ol 和不明确的隐式 join sintax)

于 2019-02-28T19:11:48.557 回答
0

你想“加入”客户和房间表:

select client.hostname, client.pk_macaddr, client.ipadress, room.roomdescription, client.fk_pk_roomnumber 
from client
inner join room
on client.fk_pk_roomnumber = room.pk_roomnumber
where room.pk_roomnumber = '131';
于 2019-02-28T19:11:56.070 回答