| Subiectul anterior :: Subiectul următor |
| Autor |
Mesaj |
el_suiram
Data înscrierii: 04/Apr/2005
Mesaje: 9
Locație: Blaj
|
| Trimis: Mar Iul 19, 2005 12:07 am Titlul subiectului: Cum limitez o interogare? |
|
|
Citesc date dintr-o baza MS Access (.mdb) folosind cateva functii odbc. Problema este ca vreau sa limitez numarul de randuri extrase si nu reusesc. In mod normal lucrul asta se face folosind LIMIT, dar daca introduc LIMIT scriptul nu mai functioneaza deloc, nu da nici macar o eroare. Iata codul:
Cod: <?php
include ("cnx_db.php");
$query = "SELECT id,item1,item2 FROM tabel ORDER BY id DESC LIMIT 0,2";
$result= odbc_exec( $cnx, $query );
if (!$result) {
Error_handler( "Eroare in odbc_exec" , $cnx );
}
$id = odbc_result( $result, 1 );
$item1 = odbc_result( $result, 2 );
$item2 = odbc_result( $result, 3 );
?>
In MySQL o astfel de interogare functioneaza fara probleme. Oare MS Acces nu respecta standardele SQL? Ma poate ajuta cineva sa rezolv aceasta problema? |
|
| Sus |
|
aurelian
Data înscrierii: 01/Iun/2003
Mesaje: 833
Locație: Bucuresti
|
| Trimis: Mar Iul 19, 2005 7:57 am Titlul subiectului: |
|
|
| este posibil sa ma insel, insa cred ca LIMIT nu este in standardele SQL. |
|
| Sus |
|
carco
Data înscrierii: 27/Mai/2004
Mesaje: 2796
Locație: Bucuresti
|
| Trimis: Mar Iul 19, 2005 8:03 am Titlul subiectului: |
|
|
Nu cred ca te inseli. Insa TOP care e fol. de MS este in ansi 92 parca (sau nu?). In fine, cert este ca nu exista un SGBD care sa implementeze _tot_ si _numai_ ansi sql. Exista o gramada de extensii.
Mike Hillyer, Technical Writer,MySQL AB a scris:
DB2 -- select * from table fetch first 10 rows only
Informix -- select first 10 * from table
Microsoft SQL Server and Access -- select top 10 * from table
MySQL and PostgreSQL -- select * from table limit 10
Oracle 8i -- select * from (select * from table) where rownum <= 10
(gasit in discutia de aici) |
|
| Sus |
|
el_suiram
Data înscrierii: 04/Apr/2005
Mesaje: 9
Locație: Blaj
|
| Trimis: Mar Iul 19, 2005 12:49 pm Titlul subiectului: |
|
|
| Mai ce ti-e si cu SQL-ul asta! Sunt date ca exemplu 5 baze de date, fiecare cu modul ei de a limita o interogare. Puteam sa stau si in cap si tot nu reuseam sa aflu cum limitez interogarea in Access. Multumesc pentru ca mi-ati deschis ochii. 8O |
|
| Sus |
|
carco
Data înscrierii: 27/Mai/2004
Mesaje: 2796
Locație: Bucuresti
|
| Trimis: Mar Iul 19, 2005 1:11 pm Titlul subiectului: |
|
|
De fapt sunt 7 date.
As aduga pe linia cu TOP si Microsoft Visual FoxPro
(exista si varianta TOP 20 PERCENT caz in care se furnizeaza doar 20% din rezultate)
Atentie! La folosirea lui TOP, este obligatorie includerea clauzei ORDER BY. |
|
| Sus |
|
el_suiram
Data înscrierii: 04/Apr/2005
Mesaje: 9
Locație: Blaj
|
| Trimis: Mie Iul 20, 2005 7:39 pm Titlul subiectului: |
|
|
| Mersi pt precizari in ceea ce priveste obligativitatea clauzei ORDER BY. De data asta am avut noroc ca am folosit-o, dar cine stie ce s-ar fi intamplat daca nu aveam in interogare ORDER BY? Iara m-as fi dat de ceasul mortii! :lol: |
|
| Sus |
|
XtraVagAnT
Data înscrierii: 24/Aug/2005
Mesaje: 5
|
| Trimis: Mie Aug 24, 2005 5:09 pm Titlul subiectului: |
|
|
Dar in Interbase/Firebird stie cineva cum se poate face limitarea numarului de rezultate returnate de o interogare?
Ciauz! |
|
| Sus |
|
johnny
Data înscrierii: 31/Iul/2004
Mesaje: 904
Locație: Bucuresti
|
| Trimis: Mie Aug 24, 2005 6:23 pm Titlul subiectului: |
|
|
Pentru Firebird < 1 trebuie sa scrii stored procedures pentru a simula LIMIT...
Incepand cu Firebird 1.0 cred, a fost implementat:
Cod:
SELECT FIRST x [SKIP y] … [restul query-ului]
//exemplu:
SELECT FIRST 10 SKIP 20 col1, col2, col3 FROM tabel
|
|
| Sus |
|
XtraVagAnT
Data înscrierii: 24/Aug/2005
Mesaje: 5
|
| Trimis: Mie Aug 24, 2005 8:29 pm Titlul subiectului: |
|
|
Intradevar functioneaza cu "FIRST".
Thx!
Ciauz! |
|
| Sus |
|
PHPRomania Bot
Bot Member
Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google |
| Trimis: Mie Dec 26, 2007 7:01 pm Titlul subiectului: Ad |
|
|
|
|
|
| Sus |
|
| |