So fragen Sie Daten aus mehreren unabhängigen Tabellen und Paging in MySQL ab

So fragen Sie Daten aus mehreren unabhängigen Tabellen und Paging in MySQL ab

Mysql mehrere unabhängige Tabellen Abfragedaten und Paging

Funktionale Anforderungen

Nehmen Sie die gewünschten Daten aus drei Tabellen ohne Primär- und Fremdschlüsselzuordnungen und paginieren Sie sie.

Datenbanktabellenstruktur

Obsttisch:

Bildbeschreibung hier einfügen

Nüsse Tabelle:

Bildbeschreibung hier einfügen

Getränkekarte:

Bildbeschreibung hier einfügen

Der Aufbau der Datenbank kann beliebig erfolgen, wichtig ist die Methode.

Verwenden Sie hauptsächlich den UNION ALL-Operator

Der Operator UNION ALL wird verwendet, um die Ergebnismengen von zwei oder mehr SELECT-Anweisungen zu kombinieren.

Beachten Sie, dass die SELECT-Anweisungen innerhalb von UNION ALL die gleiche Spaltenanzahl haben müssen. Spalten müssen außerdem ähnliche Datentypen aufweisen. Darüber hinaus muss die Reihenfolge der Spalten in jeder SELECT-Anweisung dieselbe sein; außerdem sind die Spaltennamen im UNION ALL-Ergebnissatz immer identisch mit den Spaltennamen in der ersten SELECT-Anweisung in UNION ALL.

//Detaillierte SQL-Anweisung select * FROM
(
	(Wählen Sie FID, FName, Preis und Art aus Früchten aus)
	UNION ALLE
	(Wählen Sie nid,name,price,6 als Typ aus nut)
	UNION ALLE
	(wählen Sie did,dname,price,7 als Typ aus Getränken aus)
	
) als fnd-Limit 0,10 -----fnd ist der Alias ​​der Tabelle

Endergebnis

Bildbeschreibung hier einfügen

Lösung für das Paging-Problem bei der Abfrage mehrerer Tabellen in MySQL

MySQL Eins-zu-viele-Paging-Problem

Abteilungstabelle: tbl_dept

Mitarbeitertabelle: tbl_emp

Datenbank-SQL-Datei

 
DATENBANK ERSTELLEN /*!32312 WENN NICHT VORHANDEN */`ssm-crud` /*!40100 STANDARDZEICHENSATZ utf8 */;
 
VERWENDEN Sie „ssm-crud“;
 
/*Tabellenstruktur für Tabelle `tbl_dept` */
 
Tabelle löschen, wenn `tbl_dept` vorhanden ist;
 
Tabelle „tbl_dept“ erstellen (
  `dept_id` int(11) NICHT NULL AUTO_INCREMENT,
  `Abteilungsname` varchar(255) DEFAULT NULL,
  PRIMÄRSCHLÜSSEL (`dept_id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;
 
/*Daten für die Tabelle `tbl_dept` */
 
in `tbl_dept`(`dept_id`,`dept_name`) Werte einfügen 
(1,'Technische Abteilung'),
(2,'Wirtschaftsabteilung'),
(6, „Verkaufsabteilung“),
(7, „Personalabteilung“);
 
/*Tabellenstruktur für Tabelle `tbl_emp` */
 
Tabelle löschen, wenn `tbl_emp` vorhanden ist;
 
TABELLE ERSTELLEN `tbl_emp` (
  `emp_id` int(11) NICHT NULL AUTO_INCREMENT,
  `emp_name` varchar(255) DEFAULT NULL,
  `emp_gender` char(1) DEFAULT NULL,
  `emp_email` varchar(255) DEFAULT NULL,
  `d_id` int(11) DEFAULT NULL,
  PRIMÄRSCHLÜSSEL (`emp_id`),
  SCHLÜSSEL `FK_tbl_emp` (`d_id`),
  EINSCHRÄNKUNG `FK_tbl_emp` FREMDER SCHLÜSSEL (`d_id`) REFERENZEN `tbl_dept` (`dept_id`)
) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8;
 
/*Daten für die Tabelle `tbl_emp` */
 
in Werte `tbl_emp`(`emp_id`,`emp_name`,`emp_gender`,`emp_email`,`d_id`) einfügen 
(1,'xiaoshen','2',NULL,6),
(4,'Xiaoming','1',NULL,1),
(5,'xiaohong','2',NULL,2),
(6,'xiaohei','2',NULL,6),
(7,'xiaozhang','1',NULL,1),
(8,'xiaogao','1',NULL,1),
(9,'xiaohua','1',NULL,1),
(10,'xiaoyan','2',NULL,1),
(11,'xiaohai','2',NULL,2),
(12,'xiaoqiang','1',NULL,6),
(13,'xiaoqi','2',NULL,7);

Paging-Fehler beim Schreiben der Methode (Hauptabfrage-Mitarbeitertabelle)

Wählen Sie * aus tbl_emp e
LINKS VERBINDEN 
tbl_dept d
 
EIN d.dept_id = e.d_id
 
GRENZE 1,10

Lösen Sie das Problem mithilfe einer Unterabfrage

WÄHLEN
        *
    AUS
     (
       WÄHLEN
       *
        AUS
        tbl_emp e
        LINKS VERBINDEN 
    tbl_dept d
        EIN d.dept_id = e.d_id
        
        GRUPPE NACH e.d_id
        GRENZE 1,10
 
     )
 
      LINKS JOIN tbl_dept d
        EIN d.dept_id = e.d_id

Der folgende Code ist irrelevant und dient nur zur Sicherung

WÄHLEN
        ft.id,
        ft.partner_id AS Partner-ID,
        ft.code,
        ft.end_update_date AS endUpdateDate,
        ft.name ,
        ft.Typ,
        ft.Fläche,
        ft.is_default AS istStandard,
        fp.id fpId,
        fp.shop_id AS fpShopId ,
        fp.provice_id AS fpProviceId ,
        fp.provice_name AS fpProviceName ,
        fp.start_num AS fpStartNum ,
        fp.start_fee AS fpStartFee ,
        fp.increase_num AS fpIncreaseNum ,
        fp.increase_fee AS fpIncreaseFee,
        fp.code AS fpCode,
        fp.provice_text AS fpProviceText ,
        fp.template_id AS fpTemplateId
    AUS
     (
       WÄHLEN
        f.id,
        f.partner_id ,
        f.Code,
        f.end_update_date ,
        f.name ,
        f.Typ,
        f.Bereich,
        f.ist_standardmäßig,
        f.is_del,
        f.Erstellungsdatum
        AUS
        bus_freight_template f
        LINKS JOIN bus_freight_provice p
        EIN f.id = p.template_id
        WO f.code = p.code
        UND f.code = #[code]
        GROUP BY f.id
        LIMIT #{startPage},#{pageSize}
 
     ) Fuß
 
      LINKS JOIN bus_freight_provice fp
        EIN ft.id = fp.template_id
    WO ft.code = fp.code
      UND fp.template_id IST NICHT NULL
      UND ft.code = #[code]
      UND fp.is_del = '0'
      UND ft.is_del = '0'
 
      Sortieren nach ft.create_date desc

Das Obige ist meine persönliche Erfahrung. Ich hoffe, es kann Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen werden.

Das könnte Sie auch interessieren:
  • Implementierung der MySQL-Abfrageoptimierung für große Seiten für Millionen von Daten
  • So implementieren Sie eine Paging-Abfrage in MySQL
  • Techniken zur Optimierung von MySQL-Paging-Abfragen
  • Sortierung und Paginierung von MySQL-Abfragen
  • Tutorial zur MySQL-Optimierung: Große Paging-Abfrage
  • So implementieren Sie Paging-Abfragen mit MySQL

<<:  Der Inhalt des häufig verwendeten Eingabetextfelds wird automatisch vertikal zentriert und der Standardeingabeaufforderungstext ist leer, wenn darauf geklickt wird

>>:  js-Simulation, um den Effekt der Bildvergrößerung auf der Jingdong-Detailseite zu erzielen

Artikel empfehlen

Einführung in die Verwendung des offiziellen MySQL-Leistungstesttools mysqlslap

Inhaltsverzeichnis Einführung Anweisungen Tatsäch...

Reines CSS zum Ändern der Layoutgröße durch Ziehen nach links und rechts

Nutzen Sie die Funktion „Non- overflow:auto - res...

Implementieren einer benutzerdefinierten Bildlaufleiste mit nativem JS

In diesem Artikelbeispiel wird der spezifische JS...

Centos7-Startvorgang und Nginx-Startkonfiguration in Systemd

Centos7-Startvorgang: 1.post (Selbsttest beim Ein...

So konfigurieren Sie Nginx, um die Zugriffshäufigkeit derselben IP zu begrenzen

1. Fügen Sie den folgenden Code zu http{} in ngin...

Zusammenfassung zur Anwendung dekorativer Elemente im Webdesign

<br />Vorwort: Bevor Sie dieses Tutorial les...

So ändern Sie die Apt-Get-Quelle in Ubuntu 18.04

Bei Verwendung von apt-get zur Installation ist d...

Analyse der MySQL-Ansichtsfunktionen und Anwendungsbeispiele

Dieser Artikel veranschaulicht anhand von Beispie...

Zusammenfassung relevanter Erkenntnisse zur Umsetzung adaptiven Webdesigns

Wie funktioniert „Adaptives Webdesign“? Eigentlich...

Vue3 kapselt die Textskelett-Effektkomponente der Seitennavigation

Vue3-Projektkapselung Seitennavigation Textskelet...

So ändern Sie den MySQL-Zeichensatz

1. Überprüfen Sie den Zeichensatz von MySQL Varia...

WeChat-Applet implementiert Taschenrechnerfunktion

In diesem Artikel wird der spezifische Code für d...