SQL 查询好像不影响同样的行数,加个count语句

SQL Query seems not to affect the same number of rows, Adding a count statement

我做了一个看起来像这样的查询

查询 1.

  SELECT zlec_status.nazwa                       AS Status, 
           piorytet.nazwa                          AS Priorytet, 
           Concat(koord.imie, ' ', koord.nazwisko) AS `Koordynator`, 
           Concat(zlec_adresy.miasto, ' - ', zlec_adresy.ulica, ' ', 
           zlec_adresy.oddzial) 
                                                   AS `adres`, 
           zlec_z_dnia,zlec_id, 
           zlec_nr, 
           zlec_do, 
           zlec_ogran, 
           awizacje, 
           awizacja_na_dzien, 
           termin_zamkniecia, 
           tresc, 
           uwagi 
    FROM   zlec 
           INNER JOIN koord 
                   ON zlec.koord = koord.id 
           INNER JOIN zlec_adresy 
                   ON zlec.zlec_addres = zlec_adresy.id 
           INNER JOIN piorytet 
                   ON zlec.priorytet = piorytet.id 
           INNER JOIN zlec_status 
                   ON zlec.status_zlecenia = zlec_status.id 

而下面这一个是普通的

查询 2.

SELECT * FROM zlec;

事情是第一个returns(通过执行影响)48行,而第二个查询returns103行。这可能是什么原因?

如果您想自己制作一个 运行 http://pastebin.com/cMPAtxCU,我也会向您展示我的 sql 的愚蠢之处。

子问题 - 完全没有必要从一个新问题开始,因为它也与行数影响有关。

此外,我想知道如何进入第一个查询 count(*) 以获取受影响的行 - 它必须在 sql 中完成我不能为此使用 php 代码, 可能最好使用 limit 1 进行计数。

使用额外的内部联接,行可能会被消除。您是否尝试过将内部联接添加到您的 "Select * FROM zlec;"?

INNER JOIN,如果你的其他表之一,koordzlec_adresypiorytetzlec_status缺少一条记录对应的记录在 zlec 中,zlec 中的记录将不在结果集中。如果要显示zlec中的每条记录,则必须使用LEFT JOIN。查看:

http://blog.codinghorror.com/a-visual-explanation-of-sql-joins/

一个很好的解释。