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

Vergleich der Vorteile von vue3 und vue2

Inhaltsverzeichnis Vorteil 1: Optimierung des Dif...

Zusammenfassung der MySQL-Injection-Bypass-Filtertechniken

Schauen wir uns zunächst den GIF-Vorgang an: Fall...

Einführung in die Generierung von Kubernetes-Zertifikaten mit OpenSSL

Kubernetes unterstützt drei Arten der Authentifiz...

Tools zum Konvertieren statischer Websites in RSS

<br /> Dieser Artikel wurde von Rachel Golds...

Fassen Sie die häufigsten Anwendungsprobleme von XHTML-Code zusammen

<br />Ich habe festgestellt, dass viele Leut...

Sprechen Sie über nextTick in Vue

Wenn sich die Daten ändern, wird die DOM-Ansicht ...

Analyse von Multithread-Programmierbeispielen unter Linux

1 Einleitung Die Thread-Technologie wurde bereits...

Verwendung von MySQL DDL-Anweisungen

Vorwort Die Sprachklassifikation von SQL umfasst ...

CSS zum Erzielen eines Animationseffekts der Tik Tok-Abonnementschaltfläche

Ich habe mir vor einiger Zeit Tik Tok angesehen u...

Implementierung einer Fuzzy-Abfrage wie %% in MySQL

1, %, steht für beliebige 0 oder mehr Zeichen. Es...

mysql IS NULL mit Indexfallerklärung

Einführung Die Verwendung von „ist null“, „ist ni...

Detaillierte Erklärung der MySQL-Halbsynchronisierung

Inhaltsverzeichnis Vorwort MySQL Master-Slave-Rep...