我有幾個表格,其中包含來自網頁中請求的資料。問題是,我做了一些內部連接來合并來自請求表中的外鍵的資料,但我想添加一個列來計算發送請求的辦公室總共擁有的相應設備。
這是我的代碼,以便更好地理解我的要求。
我的查詢是這樣的:
SELECT realiza_soli.*, oficina.id_lugar, oficina.desc_lugar,
tipo_equipamiento.nom_tipo FROM realiza_soli
INNER JOIN usuario
ON realiza_soli.fk_user = usuario.id_user
INNER JOIN tipo_equipamiento
ON realiza_soli.fk_tipo = tipo_equipamiento.id_tipo
INNER JOIN oficina
ON usuario.fk_ofic = oficina.id_lugar
AND realiza_soli.estado_soli = 'Pendiente Info'
ORDER BY realiza_soli.id_soli ASC;
生成的表是這樣的:
--------- ------------- ---------------------- ---------------- ---------------- ---------------- --------- --------- ---------- ------------ ----------
| id_soli | titulo_soli | desc_soli | estado_soli | fecha_ini_soli | fecha_fin_soli | fk_tipo | fk_user | id_lugar | desc_lugar | nom_tipo |
--------- ------------- ---------------------- ---------------- ---------------- ---------------- --------- --------- ---------- ------------ ----------
| 1 | Solicitud 1 | Descripción | Pendiente Info | 2020-01-01 | NULL | 1 | 4 | 10 | Oficina 10 | Monitor |
| 13 | 25 Monitor | Dame mmmmmmmaaaaaaas | Pendiente Info | 2021-11-05 | NULL | 1 | 5 | 5 | Oficina 5 | Monitor |
--------- ------------- ---------------------- ---------------- ---------------- ---------------- --------- --------- ---------- ------------ ----------
問題是,我想根據“oficina”表為每一行添加一個計數,從“equipamiento”表中計算它有多少設備。
這是我的“equipamiento”表:
---------- ------------ ---------- ----------------- ------------- ------------ ------------- -------------- ----------- --------- ---------- --------- ---------
| id_equip | fecha_adq | garantia | desc_equip | marca_equip | tipo | lugar_equip | estado_equip | fk_estado | fk_tipo | fk_marca | fk_ofic | fk_prov |
---------- ------------ ---------- ----------------- ------------- ------------ ------------- -------------- ----------- --------- ---------- --------- ---------
| 1 | 2020-01-01 | 24 | Teclado | Kolke | Componente | Oficina 5 | Instalado | 4 | 21 | 3 | 5 | 1 |
| 2 | 2020-02-02 | 12 | Tarjeta Gráfica | NVIDIA | Componente | Oficina 3 | Instalado | 4 | 6 | 7 | 3 | 2 |
| 3 | 2020-03-03 | 9 | Memoria RAM | ADATA | Componente | NULL | Stock | 2 | 7 | 26 | NULL | NULL |
| 4 | 2020-04-04 | 10 | Tarjeta de Red | Realtek | Componente | Oficina 2 | Instalado | 4 | 5 | 20 | 2 | 3 |
| 5 | 2020-01-01 | 12 | Monitor | Samsung | Componente | Oficina 5 | Instalado | 4 | 1 | 22 | 5 | 3 |
---------- ------------ ---------- ----------------- ------------- ------------ ------------- -------------- ----------- --------- ---------- --------- ---------
如您所見,“equipamiento”表具有“fk_ofic”列,該列參考“oficina”表:
---------- ------------ ------------- ----------------- -------------- -------------- ----------- -------- ----------
| id_lugar | desc_lugar | grupo_lugar | dir_lugar | depart_lugar | ciudad_lugar | tel_lugar | fk_dep | fk_grupo |
---------- ------------ ------------- ----------------- -------------- -------------- ----------- -------- ----------
| 1 | Oficina 1 | Oficina | Calle Random 1 | Montevideo | Montevideo | 94132471 | 1 | 5 |
| 2 | Oficina 2 | Oficina | Calle Random 2 | Montevideo | Montevideo | 91356985 | 1 | 5 |
| 3 | Oficina 3 | Oficina | Calle Random 3 | Montevideo | Montevideo | 92358985 | 1 | 5 |
| 4 | Oficina 4 | Oficina | Calle Random 4 | Montevideo | Montevideo | 95355685 | 1 | 5 |
| 5 | Oficina 5 | Oficina | Calle Random 5 | Montevideo | Montevideo | 97356990 | 1 | 5 |
| 6 | Oficina 6 | Oficina | Calle Random 6 | Montevideo | Montevideo | 99344985 | 1 | 5 |
| 7 | Oficina 7 | Oficina | Calle Random 7 | Montevideo | Montevideo | 91234567 | 1 | 5 |
| 8 | Oficina 8 | Director | Calle Random 8 | Montevideo | Montevideo | 91234567 | 1 | 1 |
| 9 | Oficina 9 | Informática | Calle Random 9 | Montevideo | Montevideo | 91234567 | 1 | 2 |
| 10 | Oficina 10 | SubB | Calle Random 10 | Montevideo | Montevideo | 91234567 | 1 | 4 |
| 11 | Oficina 11 | Compras | Calle Random 11 | Montevideo | Montevideo | 91234567 | 1 | 6 |
| 12 | Oficina 12 | Compras | Calle Random 12 | Montevideo | Montevideo | 91234567 | 1 | 6 |
---------- ------------ ------------- ----------------- -------------- -------------- ----------- -------- ----------
如果我在這兩個表之間進行內部連接,您可以看到每個辦公室安裝了哪些設備:
---------- ----------------- ---------- ------------
| id_equip | desc_equip | id_lugar | desc_lugar |
---------- ----------------- ---------- ------------
| 1 | Teclado | 5 | Oficina 5 |
| 2 | Tarjeta Gráfica | 3 | Oficina 3 |
| 4 | Tarjeta de Red | 2 | Oficina 2 |
| 5 | Monitor | 5 | Oficina 5 |
---------- ----------------- ---------- ------------
所以,兩個組件安裝在一個辦公室,辦公室5,一個在辦公室2,一個在辦公室3。根據這些資訊,我想為每個辦公室添加一列total_equipment。這是想要的結果:
--------- ------------- ---------------------- ---------------- ---------------- ---------------- --------- --------- ---------- ------------ ---------- --------------
| id_soli | titulo_soli | desc_soli | estado_soli | fecha_ini_soli | fecha_fin_soli | fk_tipo | fk_user | id_lugar | desc_lugar | nom_tipo | total_equip |
--------- ------------- ---------------------- ---------------- ---------------- ---------------- --------- --------- ---------- ------------ ---------- --------------
| 1 | Solicitud 1 | Descripción | Pendiente Info | 2020-01-01 | NULL | 1 | 4 | 10 | Oficina 10 | Monitor | 0 |
| 13 | 25 Monitor | Dame mmmmmmmaaaaaaas | Pendiente Info | 2021-11-05 | NULL | 1 | 5 | 5 | Oficina 5 | Monitor | 2 |
--------- ------------- ---------------------- ---------------- ---------------- ---------------- --------- --------- ---------- ------------ ---------- --------------
這是因為第一個請求屬于辦公室 10,安裝了 0 臺設備,第二個請求屬于辦公室 5,安裝了 2 臺設備。
對不起,如果我的解釋很糟糕,但我無法用其他方式解釋。希望任何人都可以提供幫助。如果您對我的代碼有任何疑問,我可以解釋。
uj5u.com熱心網友回復:
當我理解您的描述正確時,這應該有效:
SELECT
realiza_soli.*,
oficina.id_lugar,
oficina.desc_lugar,
tipo_equipamiento.nom_tipo,
(SELECT COUNT(*) FROM equipamiento WHERE equipamiento.fk_ofic = oficina.id_lugar) as total_equip
FROM realiza_soli
INNER JOIN usuario ON realiza_soli.fk_user = usuario.id_user
INNER JOIN tipo_equipamiento ON realiza_soli.fk_tipo = tipo_equipamiento.id_tipo
INNER JOIN oficina ON usuario.fk_ofic = oficina.id_lugar
AND realiza_soli.estado_soli = 'Pendiente Info'
ORDER BY realiza_soli.id_soli ASC;
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/351097.html
標籤:mysql
