Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky
Scenár 1:Kontrola, či existuje hodnota v inej tabuľke
Povedzme, že máte dve tabuľky:„Používatelia“ a „objednávky“. Chcete nájsť všetkých používateľov, ktorí zadali aspoň jednu objednávku.
* Tabuľka `Používatelia: `user_id`,` name '
* Tabuľka `Objednávky: `Order_id`,` user_id`, `Order_date`
PHP kód:
`` `php
Php
$ conn =new mysqli ("your_db_host", "your_db_user", "your_db_password", "your_db_name");
if ($ conn-> connect_error) {
die ("Connection zlyhal:". $ conn-> connect_error);
}
$ sql ="Vyberte U.User_id, U.Name
Od používateľov u
Kde existuje (
Vyberte 1
Z objednávok o
Kde O.User_id =u.user_id
) “;
$ result =$ conn-> query ($ sql);
if ($ result-> num_rows> 0) {
while ($ row =$ result-> fetch_assoc ()) {
echo "ID používateľa:". $ riadok ["user_id"]. " - meno:". $ riadok ["name"]. „
„;
}
} else {
echo "0 výsledkov";
}
$ conn-> close ();
?>
`` `
Používa sa „existujú“ subquery, čo je vo všeobecnosti najúčinnejším spôsobom, ako skontrolovať existenciu. Skontroluje iba, či v tabuľke „Objednávky“ existuje zodpovedajúci `user_id`, a nie načítať žiadne údaje zo samotnej tabuľky„ Orders “.
Scenár 2:Porovnanie hodnôt a nájdenie rozdielov
Povedzme, že máte dve tabuľky so spoločným poľom a chcete nájsť riadky, kde sa hodnoty v inom poli líšia.
* Tabuľka `Products`: `produkt_id`,` cena`
* Tabuľka `cena_history`: `Product_id`,` Cena`, `dátum`
Chcete nájsť produkty, v ktorých sa súčasná cena v `Products 'líši od najnovšej ceny v` cena_history`.
PHP kód:
`` `php
Php
$ conn =new mysqli ("your_db_host", "your_db_user", "your_db_password", "your_db_name");
if ($ conn-> connect_error) {
die ("Connection zlyhal:". $ conn-> connect_error);
}
$ sql ="Vyberte P.Product_id, P.Price AS Current_Price, Ph.Price AS History_Price
Z produktov P
Pripojte sa (vyberte produkt_id, max (dátum) ako max_date zo skupiny Price_history podľa produktu_id) ako ph_max na p.product_id =ph_max.product_id
Pripojte sa k cene_history pH na ph_max.product_id =ph.product_id a ph_max.max_date =ph.date
Kde P.Price! =Ph.Price ";
$ result =$ conn-> query ($ sql);
// ... (Zvyšok kódu na spracovanie výsledkov je rovnaký ako scenár 1)
$ conn-> close ();
?>
`` `
Toto využíva subkrotériu na nájdenie najnovšej ceny od „Price_history“ pre každý produkt a potom sa k nemu pripojí s tabuľkou „Products“ na porovnanie cien.
Scenár 3:Nájdenie zápasov založených na viacerých poliach
Ak potrebujete porovnávať na základe viacerých polí, upravte klauzulu „kde“ podľa toho:
`` sql
Kde u.user_id =o.user_id a u.city =o.city
`` `
Dôležité úvahy:
* Manipulácia s chybami: Kód obsahuje základné spracovanie chýb pre pripojenie databázy. Pridajte robustnejšie spracovanie chýb pre výrobné prostredie.
* Pripravené výroky: Pokiaľ ide o bezpečnosť, vždy používajte pripravené vyhlásenia na zabránenie zraniteľnostiam vstrekovania SQL, najmä ak do svojich dopytov začleňujete vstup používateľa.
* Optimalizácia databázy: V prípade veľkých súborov údajov zvážte pridanie indexov do polí, ktoré porovnávate, aby ste zlepšili výkon dotazu.
* Typy údajov: Uistite sa, že typy údajov z polí, ktoré porovnávate, sú kompatibilné.
Nezabudnite nahradiť `" your_db_host "`, `" your_db_user "`, `" your_db_password "` a `" your_db_name "` so svojimi skutočnými povereniami databázy. Vyberte scenár a kód, ktorý najlepšie vyhovuje vašim potrebám porovnávania. Ak máte konkrétnejšiu otázku, poskytnite tabuľkové štruktúry a presné porovnanie, ktoré chcete vykonať, a môžem vám dať viac prispôsobeného kódu.