Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 31

Discussione: sql & access

  1. #1

    sql & access

    qualcuno sa perchè se faccio partire questa query:
    codice:
    SELECT COUNT(*) AS Record FROM InEvidenza ORDER BY Ordine;
    comincia un ciclo infinito.
    Invece questa funziona:
    codice:
    SELECT * FROM HomePage_InEvidenza ORDER BY Ordine;
    Dovrei contare quanti record ci sono. Come faccio se uso COUNT() parte un ciclo infinito..


    Grazie..

  2. #2

  3. #3
    Originariamente inviato da Andriy88
    up
    COUNT() e' una funzione di MySQL, esiste anche in access?

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  4. #4
    $query = "SELECT * FROM InEvidenza"; // sostituisci tua_tabella con quella che vuoi visualizzare
    $sql_query = mysql_query($query,$connessione) or die ("Non riesco a sviluppare la query"); // nel caso la query dia un errore
    $records = mysql_num_rows($sql_query); // conto quanti records ci sono

  5. #5
    a parte che si parla di access quindi di odbc ... usare num rows su tabelle grandi è un SUICIDIO

    come lavora COUNT:
    su mysql count si limita ad estrarre il numero di record presenti nell'intestazione del file contenente la tabella

    come lavora il num rows:
    cicla tutti i dati arrivati uno per uno ... esegue una bella somma ... e restituisce i risultati

    cosa vuol dire?

    se hai un milione di record o cento mila record con count non cambia nulla ... con il num rows il tempo di recupero del numero delle righe è 10 volte più alto con un milione di record che cento mila record

    senza contare poi che il tempo di esecuzione dell'operazione ... se eseguita su odbc ... può risultare ancora più lento dato che non è PHP -> DATABASE ma è PHP -> ODBC -> DATABASE il percorso che la richiesta deve eseguire e di conseguenza i tempi di esecuzione salgono ^^

    ----

    personalmente quando è necessario tirare fuori dei record per, ad esempio, paginarli ... preferisco lanciare 2 query che hanno la stessa where ... query che servono prima a countare i record e poi a visualizzarli

    infatti se la where è BEN costruita e la tabella pure l'esecuzione del count rimarrà comunque leggerissima ... perché anche se vero che count, dato che c'è un where, non può leggere direttamente l'informazione dalla tabella può leggere le informazioni mentre le estrae

    se infatti è presente un count mysql mentre estrae esegue il conteggio ed in questo modo si ci sta comunque meno tempo ... ma molto meno tempo ... rispetto a num rows

    ... usate COUNT e siate felici ...

    ---

    per quanto riguarda access, posta il codice che usi

  6. #6
    Originariamente inviato da KaNnA
    $query = "SELECT * FROM InEvidenza"; // sostituisci tua_tabella con quella che vuoi visualizzare
    $sql_query = mysql_query($query,$connessione) or die ("Non riesco a sviluppare la query"); // nel caso la query dia un errore
    $records = mysql_num_rows($sql_query); // conto quanti records ci sono
    se non mi sbaglio questo vale solo per database MySQL e non per access o altri...

  7. #7
    devo eseguere questa query su un database access (.mdb) della microsoft offcile... :-)

    COUNT() in database access esiste perchè uso ocn ASP. Ma con php non vuole andare.

    Sapete come devo fare per contare tutti i record presenti nella tabella prima di recuperarli.

  8. #8
    Originariamente inviato da Andriy88
    devo eseguere questa query su un database access (.mdb) della microsoft offcile... :-)

    COUNT() in database access esiste perchè uso ocn ASP. Ma con php non vuole andare.

    Sapete come devo fare per contare tutti i record presenti nella tabella prima di recuperarli.
    Non puoi usare i comandi/funzioni del CLIENT mysql per dialogare con access... devi usare ODBC.

    http://it.php.net/manual/it/ref.uodbc.php

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  9. #9
    Originariamente inviato da Andriy88
    devo eseguere questa query su un database access (.mdb) della microsoft offcile... :-)

    COUNT() in database access esiste perchè uso ocn ASP. Ma con php non vuole andare.

    Sapete come devo fare per contare tutti i record presenti nella tabella prima di recuperarli.
    posta il codice pls ... senza codice dopo che dici che va in loop infinito nn famo nulla ^^

  10. #10
    ecco il codice
    codice:
    <?php
    $query = "SELECT COUNT(*) AS Record FROM HomePage_InEvidenza WHERE Attivo=False ORDER BY Ordine;";
    $path = "C:/WM/www/PtokaX.com/mdb-database/";
    $db_name = "config.mdb";
    $dsource = $path.$db_name;
    $cn_string = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=$dsource;Persist Security Info=False;";
    if (file_exists($dsource)) {
    	$rs = new COM("ADODB.Recordset");
    	$rs->open($query, $cn_string);
    	$col=2;
    	$arr = $rs->Fields['Record']->value;
    	if ($arr > 0) {
    		$j = 0;
    		echo '<table align="center" border="0" cellpadding="0" cellspacing="0" width="520">';
    		while (!$rs->EOF) {
    			if (($j%$col)==0) echo '<tr>';
    			if (($j%$col)!=0) echo '<td width="20"></td>';
    			echo '
    			<td width="250" valign="top" bgcolor="#D2E4F2">
    			<table align="center" border="0" cellpadding="0" cellspacing="0" width="100%">
    				<tr>
    					<td align="center"><h6>'.$rs->Fields['Titolo']->value.'</h6></td>
    				</tr>
    			</table>
    			<table align="center" border="0" cellpadding="0" cellspacing="0" width="100%">
    				<tr>
    					<td valign="top">[img]'.$rs->Fields['Immagine']->value.'[/img]</td>
    					<td width="2"></td>
    					<td valign="top"><div align="justify">'.$rs->Fields['Descrizione']->value.'</div></td>
    					<td width="2"></td>
    				</tr>
    			</table>
    			</td>
    			';
    			if (($j%$col)==($col-1)) echo '</tr>';
    			$j++;
    			$rs->MoveNext();
    		}
    	echo '</table>';
    	}
    	$rs->Close();
    	$rs->Release();
    	$rs = null;
    } else {
    	echo "<center style='color:#FF0000; font-weight:bold;'>Errore: Il database non è raggiungibile.</center>";
    }
    cmq. non uso le funzioni mysql x collegarmi a un db access.
    Creo una COM ADODB.Recordset

    Non so perche no va, se trasformo questo codice in ASP funziona tutto.
    Forse con PHP devo per forza aprire prima una COM ADODB.Connection e poi una Recordset. Ma sarebbe poi troppo strano visto che in qualsiasi linguaggio si può collegarsi a db access con solo una com adodb.recordset...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.