Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySql内部连接,其中数据不可用,但希望给出条件_Mysql - Fatal编程技术网

MySql内部连接,其中数据不可用,但希望给出条件

MySql内部连接,其中数据不可用,但希望给出条件,mysql,Mysql,这是我的表,与依赖的关系 表:数据 表:propinsi 表:kabupaten 表:kecamatan 立即输出(错误) 我想输出这个(右) 我尝试了很多查询,但仍然无法得到正确的条件,如CASE、internaljoin或。。 因为id_kecamatan=00在kecamatan表上不可用 你可能知道如何做它输出像我想要的??? 多谢各位 我的问题是 SELECT name, nama_propinsi, nama_kabupaten, nama_kecamatan FROM data D

这是我的表,与依赖的关系

表:数据

表:propinsi

表:kabupaten

表:kecamatan

立即输出(错误)

我想输出这个(右)

我尝试了很多查询,但仍然无法得到正确的条件,如CASE、internaljoin或。。 因为id_kecamatan=00在kecamatan表上不可用 你可能知道如何做它输出像我想要的??? 多谢各位

我的问题是

SELECT name, nama_propinsi, nama_kabupaten, nama_kecamatan FROM data D
INNER JOIN propinsi P ON D.id_propinsi=P.id_propinsi
INNER JOIN kabupaten K ON D.id_propinsi=P.id_propinsi AND D.id_kabupaten=K.id_kabupaten
INNER JOIN kecamatan C ON D.id_propinsi=P.id_propinsi AND D.id_kabupaten=K.id_kabupaten AND D.id_kecamatan=C.id_kecamatan

将所有的
内部联接
s替换为
左联接

COALESCE
函数的帮助下,您可以将
NULL
值视为连字符(
-


您需要使用
LEFT JOIN
LEFT JOIN?不使用case?或者如果@1000111哦,上帝。。你说得对。。。谢谢我试过了为什么你用全左键连接?好的,没错。。请稍候,ceklis(验证您的答案)使用了所有左联接,因为最后三个表中的任何一个都可能不包含相应的数据。顺便说一下,您的最后两个联接包含冗余联接条件。我已经把它们移走了。。所以表上的结构字段很重要,是吗。。如果结构表kecamatan创建此[id|kecamatan | id|propensi | id|kabupaten | nama|kecamatan]不能使用左联接?
+--------------+---------------+
| id_propinsi  | nama_propinsi |
+--------------+---------------+
| 12           | jawa barat    |
+--------------+---------------+
| 13           | jawa timur    |
+--------------+---------------+
+--------------+---------------+---------------+
| id_propinsi  | id_kabupaten  | nama_kabupaten|
+--------------+---------------+---------------+
| 12           | 11            | depok         |
+--------------+---------------+---------------+
| 13           | 01            | magelang      |
+--------------+---------------+---------------+
+--------------+---------------+--------------+---------------+
| id_propinsi  | id_kabupaten  | id_kecamatan | nama_kecamatan|
+--------------+---------------+--------------+---------------+
| 12           | 11            | 01           | sawangan      |
+--------------+---------------+--------------+---------------+
| 13           | 01            | 01           | pasuruan      |
+--------------+---------------+--------------+---------------+
A | Jawa barat | Depok | Sawangan 
B | Jawa Timur | Magelang | Pasuruan
A | Jawa barat | Depok | Sawangan 
B | Jawa Timur | Magelang | Pasuruan
C | Jawa barat | Depok | -
SELECT name, nama_propinsi, nama_kabupaten, nama_kecamatan FROM data D
INNER JOIN propinsi P ON D.id_propinsi=P.id_propinsi
INNER JOIN kabupaten K ON D.id_propinsi=P.id_propinsi AND D.id_kabupaten=K.id_kabupaten
INNER JOIN kecamatan C ON D.id_propinsi=P.id_propinsi AND D.id_kabupaten=K.id_kabupaten AND D.id_kecamatan=C.id_kecamatan
SELECT
    NAME,
    COALESCE(nama_propinsi,'-') AS prop,
    COALESCE(nama_kabupaten,'-') AS kabu,
    COALESCE(nama_kecamatan,'-') AS keca
FROM
    data D
LEFT JOIN propinsi P ON D.id_propinsi = P.id_propinsi
LEFT JOIN kabupaten K ON D.id_kabupaten = K.id_kabupaten
LEFT JOIN kecamatan C ON D.id_kecamatan = C.id_kecamatan