Heim  >  Artikel  >  Backend-Entwicklung  >  Es gibt ein Problem mit den Abfrageergebnissen, wenn MySQL mehrere Tabellen verknüpft

Es gibt ein Problem mit den Abfrageergebnissen, wenn MySQL mehrere Tabellen verknüpft

WBOY
WBOYOriginal
2016-09-29 09:19:061613Durchsuche

Aufgrund der Anforderungen der Produkte des Unternehmens müssen wir nun eine Funktion implementieren, in der die grundlegenden Informationen der Benutzer gespeichert werden, und in Tabelle B werden einige Verhaltensweisen der Benutzer in Tabelle A gespeichert. Tabelle C und Tabelle B haben die gleichen Eigenschaften . Bei der Abfrage können wir nach den Zählergebnissen in Tabelle B oder Tabelle C sortieren, also haben wir über Join nachgedacht, aber es gab ein Problem.

Veröffentlichen Sie zunächst die Datenstrukturen der drei Tabellen

<code>  CREATE TABLE `A` (
  `id` int(11) NOT NULL auto_increment,
  `username` varchar(255) default NULL,
  PRIMARY KEY  (`id`),
) ENGINE=MyISAM AUTO_INCREMENT=1;</code>
<code>  CREATE TABLE `B` (
  `id` int(11) NOT NULL auto_increment,
  `userid` int(11) default NULL,
  `dosomething` varchar(255) default NULL,
  PRIMARY KEY  (`id`),
  KEY `userid` USING BTREE (`userid`)
) ENGINE=MyISAM AUTO_INCREMENT=1;</code>
<code>  CREATE TABLE `C` (
  `id` int(11) NOT NULL auto_increment,
  `userid` int(11) default NULL,
  `dosomething` varchar(255) default NULL,
  PRIMARY KEY  (`id`),
  KEY `userid` USING BTREE (`userid`)
) ENGINE=MyISAM AUTO_INCREMENT=1;</code>

Ich habe es selbst ausprobiert und festgestellt, dass die Abfrageergebnisse unterschiedlich waren

<code>SELECT u.id, COUNT(s.id) AS sapply, COUNT(uu.id) AS ftotal FROM A AS u
 RIGHT JOIN B AS s ON u.id = s.userid
 RIGHT JOIN C AS uu ON u.id = `uu`.`userid`
 GROUP BY `u`.`id` ORDER BY `ftotal` DESC LIMIT 10</code>

Es gibt ein Problem mit den Abfrageergebnissen, wenn MySQL mehrere Tabellen verknüpft

Es liegt offensichtlich ein Problem mit den Daten vor, bitte sehen Sie sich die Ergebnisse separat an

<code>SELECT u.id, COUNT(s.id) AS sapply FROM A AS u
 RIGHT JOIN B AS s ON u.id = s.userid
 GROUP BY `u`.`id` ORDER BY `sapply` DESC LIMIT 10</code>

Es gibt ein Problem mit den Abfrageergebnissen, wenn MySQL mehrere Tabellen verknüpft

<code>SELECT u.id, COUNT(uu.id) AS ftotal FROM A AS u
 RIGHT JOIN C AS uu ON u.id = uu.userid
 GROUP BY `u`.`id` ORDER BY `ftotal ` DESC LIMIT 10</code>

Es gibt ein Problem mit den Abfrageergebnissen, wenn MySQL mehrere Tabellen verknüpft

Bitte helfen Sie mir, was ist das Problem? Die erste SQL-Anweisung enthält keinen Fehler, aber das Ergebnis ist falsch.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn