Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [PHP-Mysql] Ordinare e selezionare dati da 2 tabelle

    Salve ragazzi,
    ho questo problema:
    ho una tabella "Tabella1" e una tabella "Tabella2", i campi contenuti all'interno delle 2 tabelle ci sono gli stessi identici campi, sia come nome sia come tipo.I campi sono "campo1" "campo2" di tipo TEXT,il "campo3",è di tipo INT .
    1. Vorrei fare una SELECT delle 3 righe(totali) delle 2 tabelle, dove il "campo3" è maggiore rispetto a tutti gli altri. Fatto questo dovrei sapere se la riga scelta è della "tabella1" o della "tabella2". Come posso fare?Si può fare un'unica SELECT?
    Vi porto un 'esempio di quello che posssiedo nel Mysql:

    "tabella1"
    Riga1:
    Campo1="casa"
    Campo2="vacanza"
    Campo3=7
    Riga2:
    Campo1="gita"
    Campo2="negozio"
    Campo3=5
    Riga3:
    Campo1="gnomo"
    Campo2="ginestra"
    Campo3=4

    "tabella 2"
    Riga1:
    Campo1="street"
    Campo2="holyday"
    Campo3=3
    Riga2:
    Campo1="dito"
    Campo2="posta"
    Campo3=12
    Riga3:
    Campo1="schermo"
    Campo2="verdura"
    Campo3=8

    Quello che vorrei ottenere, nell'ordine, è la Riga2 della "tabella2" , la Riga3 della "tabella2" , la Riga1 della "tabella1" .
    Spero di essermi spiegato.
    Grazie del vostro aiuto

  2. #2
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858
    con mySQL >= 4.0.0
    codice:
    SELECT * FROM tabella1
    UNION
    SELECT * FROM tabella2
    ORDER BY campo3 DESC LIMIT 0,3
    think simple think ringo

  3. #3
    Ho mysql 3.23,
    comunque devo necessariamente sapere se il dato trovato proviene dalla "tabella1" o dalla "tabella2".

    Grazie del tuo aiuto

  4. #4
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858
    codice:
    //--------------------------------------------
    function incision_sort($arr, $col){
    	//artox at online dot no
           for($k = 0; $k < sizeof($arr)-1; $k++){
               // $arr[$k+1] is possibly in the wrong place. Take it out.
               $t = $arr[$k+1];
               $i = $k;   
              
               // Push $arr[i] to the right until we find the right place for $t.
               while($i >= 0 && $arr[$i][$col] > $t[$col]){
                   $arr[$i+1] = $arr[$i];
                   $i--;
               }
              
               // Insert $t into the right place.
               $arr[$i+1] = $t;                           
           }// End sort
           return $arr;       
       }
    //--------------------------------------------
    function selecta($temp,$tabella){
    	$sql="SELECT * FROM $tabella";
    	$st=mysql_query($sql) or die(mysql_error());
    	while ($row=mysql_fetch_assoc($st)){
    		array_unshift($row,$tabella);
    		$temp[]=$row;
    	}
    	return $temp;
    } 
    //--------------------------------------------
    $temp=array();
    $temp=selecta($temp,"tabella1");
    $temp=selecta($temp,"tabella2");
    $temp=incision_sort($temp,"campo3");
    $temp=array_slice($temp,-3,3);
    $temp=array_reverse($temp);
    foreach($temp as $valori){
    	foreach($valori as $valore)
    		echo $valore." ";
    	echo "
    \n";
    }
    think simple think ringo

  5. #5
    grazie mille

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 © 2025 vBulletin Solutions, Inc. All rights reserved.