Sql PHP从没有特定关系的表中获取数据

Sql PHP从没有特定关系的表中获取数据,sql,select,inner-join,Sql,Select,Inner Join,我有两个表,控制和支付,如下所示: CONTROL PAYMENT +--------------------------+ +------------------------+ | CNUMBER | SERIAL | | NUMBER | STATUS | +-------------------

我有两个表,控制和支付,如下所示:

          CONTROL                                       PAYMENT
+--------------------------+                   +------------------------+
|  CNUMBER    |    SERIAL  |                   |  NUMBER    |   STATUS  |
+--------------------------+                   +------------------------+
| C-200-1     |  SUDU-03   |                   |    200     |    PAID   |
| C-201-1     |  SUDU-03   |                   |    201     |    PAID   |
| C-202-1     |  SUDU-03   |                   |    202     | PROCESSING|
| C-203-1     |  SUDU-03   |                   |    203     |    PAID   |
| C-204-1     |  SUDU-03   |                   |    204     | PROCESSING|
| C-204-1     |  SUDU-03   |                   |    205     | PROCESSING|
+--------------------------+                   +------------------------+
+--------------------------+
|  CNUMBER    |    STATUS  |
+--------------------------+
| C-200-1     |    PAID    |
| C-201-1     |    PAID    |
| C-202-1     | PROCESSING |
| C-203-1     |    PAID    |
| C-204-1     | PROCESSING |
| C-205-1     | PROCESSING |
+--------------------------+
我想显示如下列表:

          CONTROL                                       PAYMENT
+--------------------------+                   +------------------------+
|  CNUMBER    |    SERIAL  |                   |  NUMBER    |   STATUS  |
+--------------------------+                   +------------------------+
| C-200-1     |  SUDU-03   |                   |    200     |    PAID   |
| C-201-1     |  SUDU-03   |                   |    201     |    PAID   |
| C-202-1     |  SUDU-03   |                   |    202     | PROCESSING|
| C-203-1     |  SUDU-03   |                   |    203     |    PAID   |
| C-204-1     |  SUDU-03   |                   |    204     | PROCESSING|
| C-204-1     |  SUDU-03   |                   |    205     | PROCESSING|
+--------------------------+                   +------------------------+
+--------------------------+
|  CNUMBER    |    STATUS  |
+--------------------------+
| C-200-1     |    PAID    |
| C-201-1     |    PAID    |
| C-202-1     | PROCESSING |
| C-203-1     |    PAID    |
| C-204-1     | PROCESSING |
| C-205-1     | PROCESSING |
+--------------------------+
所以,我需要使用控制表中的序列从表控制中选择数据,就像搜索条件一样,通过付款表中的数字查找付款表中的状态,使用%like%匹配数字和cnumber

我正在努力,但还是想不出来! 我希望有人能帮助我,给我任何想法

编辑:

解决方案1:

从控制c中选择c.c编号、p.STATUS 子C编号上的内部连接付款p,3,3=p编号

感谢@Syscall,我解决了主要问题,但我有一个小问题:

如何显示所有值,即使付款条目为空/空? 如果“控制”项存在,但“付款”项不存在

诸如此类:

+--------------------------+
|  CNUMBER    |    STATUS  |
+--------------------------+
| C-200-1     |    PAID    |
| C-201-1     |            | <--empty
| C-202-1     | PROCESSING |
| C-203-1     |    PAID    |
| C-204-1     |            | <--empty
| C-205-1     | PROCESSING |
+--------------------------+
编辑2:

已解决,使用左联接 再次感谢@Syscall

解决方案:

从控制c中选择c.c编号、p.STATUS 在substrc.CNUMBER上左键连接付款p,3,3=p.NUMBER,其中col1='$var'

可以使用SUBSTR进行内部联接:

产出:

+---------+------------+
| CNUMBER | STATUS     |
+---------+------------+
| C-200-1 | PAID       |
| C-201-1 | PAID       |
| C-202-1 | PROCESSING |
| C-203-1 | PAID       |
| C-204-1 | PROCESSING |
| C-204-1 | PROCESSING |
+---------+------------+

C-205-1似乎不在您的表格控件中。是故意的吗?你好,谢谢你的回答。是的,这是故意的,因为我显示了每个表中的6个条目。所以cnumbercontrol和numberpayment有时也可以重复。您尝试过左连接而不是内连接吗?是的!它工作得很好!非常感谢你的帮助!虽然这是针对所述情况的最佳答案,但应该注意的是,不仅对未索引的列执行联接,而且对计算值执行联接将执行非常糟糕的操作。你应该考虑在控制表中添加一个类似PayMeNyID列的东西。@ SAMMICHY,是的,我知道你在说什么!使用与两个表匹配的东西会更容易,比如“id”。但从一开始创建表并不是为了协同工作,所以我正在尝试修复它。@IrvıngNgr“您的错误是什么?您可以在substrc.CNUMBER,3,3=p.NUMBER,其中c.dcon=something.@Syscall很好,现在可以使用了!我在这个SELECT中添加了WHERE子句,它也可以工作,但只显示了两个表中存在的条目。如何执行该操作以显示所有条目?因为有时控件有一个新条目,但“付款”条目仍然不存在。例如,条目C-425-1可以存在于“control”中,但尚未付款,因此,我如何显示类似的内容| CNUMBER=C-425-1 | STATUS=empty/null |我使用以下方法:从控件C中选择C.CNUMBER,p.STATUS在substrc.CNUMBER上的内部连接付款p,3,3=p.NUMBER,其中dcon='something'@Irvıngr'在这种情况下,通过左连接更改内部连接。内部联接将获得匹配的记录,左联接将获得记录,并允许不匹配的空null记录。我不太清楚: