Underforespørgsler i MySQL 4,1
Jeg har lige opdaget potentialet i underforespørgsler i MySQL. Det er rigtigt, at denne mulighed er blevet indført for nylig, men hidtil ikke er interesseret ...
Årsagen var meget enkel - de fleste af de servere, som jeg arbejdede var at installere ældre versioner. Administratorer er bange for at installere nye versioner af databaserne til flere årsager:
- usikkerhed handling - MySQL er Open Source projekt, og er ofte ændres. Størrelsen af test-version, beta, udvikling, etc. forhindret gennemførelsen af noget nyt om den kommercielle servere - vil være alt for hyppige "uheld"
- Problemet med overførslen af data - de nye motorer kan ikke fortolke databasefiler fra tidligere versioner. Den sikreste måde at flytte er eksport og import af data, som igen er meget tidskrævende
- Nogle virksomheder tror på politik - hvad der skal ændre noget, der virker godt? Efter alt kunne den manglende underforespørgsler i MySQL "undgå" at gøre en løkke i PHP.
Hvordan man bruger underforespørgsler? For eksempel udviklede jeg mit problem:
Vi søger fuldstændige oplysninger (titel, indhold mv.) Nylig artikel i hvert afsnit.
Brug en version tidligere end 4,1 problemet kunne løses på to måder:
- Lav en forespørgsel søge i alle artikler og gruppere dem wegług afdeling. Så vi loop PHP og for hver afdeling finder vi en (seneste) artikel.
- Lav en forespørgsel søge efter fremkomsten af de seneste artikler i grenene - SELECT `afdeling«, MAX (»dato«) GROUP BY `` id_dzial. Så kig på disse artikler. Efter en passende dissekeret resultaterne af tidligere søgninger, søg detaljerne i disse artikler kan obsłóżyć "en af de udvalgte (*)
Jeg vil bruge denne anden metode til at skabe en enkelt forespørgsel med underforespørgsler. Det vil se sådan her ud:
SELECT * FROM `artikler` WHERE (`afdeling`, `dato`)
IN
(
SELECT `afdeling«, MAX (»dato«), fra `artikler` GROUP BY `afdeling«
)
ORDER BY `dato` DESC
En del af det understreges underforespørgsel. Jeg håber, at denne kode er forståeligt. Det fungerer nøjagtig den samme som den løsning (*), bortset fra at al databehandling foregår på MySQL - PHP få et konkret svar til at sætte problemet. Dette forenkler en meget kompliceret og læsbarhed applikationskode.
Desværre har nogle virksomheder stadig ikke har hosting på deres servere MySQL'aw version 4,1 eller nyere. Derfor vil jeg anbefale dette firma - deres hosting sikkert understøtter MySQL 4,1. Ved jeg, fordi jeg bruger den samme
Luke Jarzembowski, forfatter til den blog - siden 2006 den illusion, at det vil være rig ... ;-) Men arbejder stadig hårdt på dette. Den programmerer , blogging og positionering , skabe og fremme deres e-virksomheder . 
Angivelser i stil med "Underforespørgsler i MySQL 4,1"
- Ingen relaterede stillinger

















