如何在数据库mysql中创建foreach

时间:2016-12-01 07:13:21

标签: mysql

这是我的表格,与依赖

的关系
  

表: data_kel

+---------+--------------+
| alamat  | nomor_kk     |
+---------+--------------+
| tes1    | 11           |
+---------+--------------+
| tes2    | 12           |
+---------+--------------+
| tes3    | 12           |
+---------++-------------+
| tes4    | 12           |
+---------+--------------+
| tes5    | 11           |
+---------+--------------+
  

表: data_mustahik

+---------+---------------+------------+
| nama    | nomor_kk      | kepala_kel |
+---------+---------------+------------+
| 11      | 11            | 1          |
+---------+--------------+-------------+
| 12      | 12            | 1          |
+---------+--------------+-------------+
| 13      | 12            | 0          |
+---------++---------------+-----------+
| 14      | 12            | 0          |
+---------+--------------+-------------+
| 15      | 11            | 0          |
+---------+--------------+-------------+
  

表: data_survey

   +--------------+---------------+
   | id_survey    | nomor_kk      |
   +--------------+---------------+
   | 21           | 11            |
   +--------------+---------------+
   | 22           | 12            |
   +--------------+---------------+
   | 23           | 12            |
   +--------------+---------------+
   | 24           | 12            |
   +--------------+---------------+
   | 25           | 11            |
   +--------------+---------------+
  

表: rekapitulasi_kelayakan

+--------------+---------------+
| id_srv       | kelayakan     |
+--------------+---------------+
| 21           | layak         |
+--------------+---------------+
| 22           | tidak         |
+--------------+---------------+
| 23           | -             |
+--------------+---------------+
| 24           | -             |
+--------------+---------------+
| 25           | -             |
+--------------+---------------+

现在输出(错误)

11 | 11 | Layak 
11 | 11 | Layak 
12 | 12 | Tidak
12 | 12 | Tidak
12 | 12 | Tidak
13 | 12 | Tidak
13 | 12 | Tidak
13 | 12 | Tidak
14 | 12 | Tidak
14 | 12 | Tidak
14 | 12 | Tidak
15 | 11 | Layak
15 | 11 | Layak

我想输出(右)

11 | 11 | Layak 
12 | 12 | Tidak
13 | 12 | Layak 
14 | 12 | Layak
15 | 11 | Tidak 

我坚持要查询这个..其实这个查询这么久..它只是简单.. 如果我使用组..输出只有一个不出现..

i want to grouping 
nomor_kk 11 with nama 11,15 => layak
nomor_kk 12 with nama 12,13,14 => tidak 

我的查询是

SELECT * FROM data_mustahik dk
         INNER JOIN data_survey ds 
         ON dk.nomor_kk=ds.nomor_kk
         INNER JOIN rekapitulasi_kelayakan rk
         ON ds.id_survey=rkid_srv

查询

CREATE TABLE data_kel
    (`alamat` varchar(5), `nomor_kk` int)
;

INSERT INTO data_kel
    (`alamat` , `nomor_kk`)
VALUES
    ('tes1', 11),
    ('tes2', 12),
    ('tes3', 12),
    ('tes4', 12),
    ('tes5', 11)
;

CREATE TABLE data_survey
    (`id_survey` int, `nomor_kk` int)
;

INSERT INTO data_survey
    (`id_survey`, `nomor_kk`)
VALUES
    (21, 11),
    (22, 12),
    (23, 12),
    (24, 12),
    (25, 11)
;




CREATE TABLE rekapitulasi_kelayakan
    (`id_srv` int, `kelayakan` varchar(5))
;

INSERT INTO rekapitulasi_kelayakan
    (`id_srv`, `kelayakan`)
VALUES
    (21, 'layak'),
    (22, 'tidak'),
    (23, '-'),
    (24, '-'),
    (25, '-')
;


CREATE TABLE data_mustahik
    (`nama` int, `nomor_kk` int, `kepala_kel` int)
;

INSERT INTO data_mustahik
    (`nama`, `nomor_kk`, `kepala_kel`)
VALUES
    (11, 11, 1),
    (12, 12, 1),
    (13, 12, 0),
    (14, 12, 0),
    (15, 11, 0)
;

查询2

SELECT dk.nama,dl.nomor_kk,rk.kelayakan FROM data_mustahik dk
INNER JOIN data_kel dl 
ON dk.nomor_kk=dl.nomor_kk
INNER JOIN data_survey ds 
ON dk.nomor_kk=ds.nomor_kk
INNER JOIN rekapitulasi_kelayakan rk
ON ds.id_survey=rk.id_srv
WHERE rk.kelayakan != '-'
order by nama

1 个答案:

答案 0 :(得分:1)

您的第二个查询正确输出13行。要获得所需的输出,您需要将连接删除到data_kel(似乎不需要)或者从此表中决定您需要哪个重复的data_kel.nomor_kk或使用像这样的distinct子句

/MT