Heim > Backend-Entwicklung > PHP-Tutorial > Wie schreibe ich diese MySQL-Anweisung in PHP?

Wie schreibe ich diese MySQL-Anweisung in PHP?

WBOY
Freigeben: 2016-08-08 09:06:46
Original
1071 Leute haben es durchsucht

Bestelltabelle: order
Wie schreibe ich diese MySQL-Anweisung in PHP?
Bestellprodukttabelle: order_goods
Wie schreibe ich diese MySQL-Anweisung in PHP?
Das heißt, order_goods speichert alle Artikel in jeder Bestellung in der Bestellung Produktinformationen;
Ich muss herausfinden, welche Produkte in den berechtigten Bestellungen enthalten sind.
Zum Beispiel: Ich möchte die Bestellungen mit der Bestellnummer gleich 20160804164336873986 in der Bestelltabelle finden und alle Felder in order und order_goods werden aufgelistet.

Antwortinhalt:

Bestelltabelle: order
Wie schreibe ich diese MySQL-Anweisung in PHP?
Bestellprodukttabelle: order_goods
Wie schreibe ich diese MySQL-Anweisung in PHP?
Das heißt, order_goods speichert alle Artikel in jeder Bestellung in der Bestellung Produktinformationen;
Ich muss herausfinden, welche Produkte in den berechtigten Bestellungen enthalten sind.
Zum Beispiel: Ich möchte die Bestellungen mit der Bestellnummer gleich 20160804164336873986 in der Bestelltabelle finden und alle Felder in order und order_goods werden aufgelistet.

order_goods hat mehrere Datensätze für eine order_id, daher bleibt order_goods mit der Bestellabfrage verbunden. Die Ausführungseffizienz der Verbindungsabfrageanweisung ist nicht hoch und muss optimiert werden

<code>SELECT * FROM order_goods og LEFT JOIN  order o ON o.id=og.order_id</code>
Nach dem Login kopieren

<code>SELECT * FROM order a JOIN IN order_goods b ON a.id=b.order_id WHERE a.order_no='20160804164336873986'

大概是这样,不知道写错没有</code>
Nach dem Login kopieren

Eins-zu-viele-Assoziationsmodell

Nachdem ich einige der obigen Antworten gelesen habe, denke ich, dass sie die Anforderungen der Frage erfüllen können. Für mich, die unter einer Zwangsstörung leidet, muss ich sagen, dass Sie bei der Abfrage des Themas nicht das Symbol * verwenden dürfen. Schreiben Sie so viele Felder aus, wie Sie möchten, und benennen Sie die Felder mit den gleichen Namen um.

Es wird empfohlen, keine Verknüpfung und Aufteilung in zwei Abfragen zu verwenden. Versuchen Sie außerdem, SELECT * nicht zu verwenden.

Ich habe auch eine gewisse Zwangsstörung. Wenn ich MySQL sehe, möchte ich fragen, ob das abzufragende Bedingungsfeld indiziert wurde.
Nachdem Sie die obige Antwort gesehen haben, fragen Sie zuerst die Daten in der Bestelltabelle ab und verwenden Sie dann eine Schleife, um die Daten in der Tabelle „order_goods“ abzufragen, die jeder Nummern-ID entsprechen. Auf diese Weise führen separate Abfragen nicht sofort zum Einfrieren (Natürlich werden Sie dies sehen, wenn die Datenmenge besonders groß ist. Wenn die Datenmenge klein ist, werde ich nichts über die Verwendung von Left Join sagen)

Mehrere Tabellenabfrage. Verwandte

<code>select * from order,order_goods
where order.id = order_goods.order_id
and order.id = '20160804164336873986';

select * form order 
inner join order_goods 
on order.id = order_goods.order_id
where order.id = '20160804164336873986';</code>
Nach dem Login kopieren

Die beiden oben genannten Schreibweisen sind gleich und implementieren zwei Tabellenverbindungen.
Die Schreibweise mit drei Tabellenverbindungen ist ebenfalls ähnlich. Fragen Sie beispielsweise die Kurse und Noten des Studenten mit der ID 1 ab:

<code>SELECT * FROM `student`, `score`, `course`
WHERE `student`.`id` = `score`.`student_id` 
AND `score`.`course_id` = `course`.`id`
AND `student`.`id` = 1;

SELECT * FROM `student` 
INNER JOIN `score` 
ON `score`.`student_id` = `student`.`id` 
INNER JOIN `course` 
ON `course`.`id` = `score`.`course_id` 
WHERE `student`.`id` = 1;</code>
Nach dem Login kopieren
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage