- Home
- Categorie
- Coding e Sistemistica
- PHP
- aiuto select
-
Così a spanna io userei una query con DISTINCT sul campo id_articolo (che mi trova i singoli id_articolo);
Il risultato va in un array;
Poi con un ciclo FOR pari al numero degli elementi dell'array (count) farei una query per ogni valore dell'array trovando il numero di righe coinvolte con '$totaleFoto=mysqli_num_rows()';
Il valore dell'ultima foto corrisponderebbe quindi a $totaleFoto;
Ulteriore query
"SELECT foto FROM tabella WHERE id_articolo = '" . array[$x] . "' DESC LIMIT 1 "
oppure
"SELECT foto FROM tabella WHERE id_articolo = '" . array[$x] . "' LIMIT $totaleFoto, $totaleFoto "
che ti estrae solo l'ultima foto e riparte il ciclo col successivo valore dell'array.E' il primo sistema che mi è venuto in mente, più difficile a dirsi che a farsi... ma a quest'ora non mi viene di meglio.
Ciao
-
Ciao,
una soluzione semplice semplice:SELECT B.* FROM
(SELECT TB_ARTICOLI.id_articolo, MAX(TB_ARTICOLI.id) AS MAX_ID
FROM TB_ARTICOLI
GROUP BY TB_ARTICOLI.id_articolo
) AS A, TB_ARTICOLI B
WHERE A.ID_ARTICOLO=B.ID_ARTICOLO AND A.MAX_ID=B.IDFacci sapere
Michele
-
Mamma mia, quante idee super complesse
Io penso che quello che sta chiedendo è molto più semplice:
Esempio, voglio estarre l'ultima foto dell'articolo 8
$query = "SELECT foto FROM tabella WHERE id_articolo = 8 ORDER BY id DESC LIMIT 0,1"
-
@Ultima said:
Mamma mia, quante idee super complesse
Io penso che quello che sta chiedendo è molto più semplice:
Esempio, voglio estarre l'ultima foto dell'articolo 8
$query = "SELECT foto FROM tabella WHERE id_articolo = 8 ORDER BY id DESC LIMIT 0,1"
Sei sicuro che il risultato è quello atteso da enricocarli???
Prova a leggere bene la richiesta....
-
@OsteriaORistorante said:
Sei sicuro che il risultato è quello atteso da enricocarli???
Prova a leggere bene la richiesta....
Quoto.
-
vorrei estrarre con una query l'ultima foto (ordine per id) associata ad un singolo articolo;
Io si, te?
-
@enricocarli said:
Buonasera a tutti,
vorrei estrarre con una query l'ultima foto (ordine per id) associata ad un singolo articolo;
il risultato dovrebbe essere:13 tavolara_personaggi-vari_40-pupazzi_colezione-tilo... 8
20 0000000903-piatto.jpg 9Io pure.
-
OK, Ultima si deve rileggere la richiesta....
-
Ma ragazzi, a me sembre piu semplice di quello che è. Io non dico che le vostre soluzioni siano sbagliate, al contrario, sto semplicemente dicendo che forse la richiesta è piu semplice di quello che si pensa.
Purtroppo lui non specifica se vuole una singola foto o un elenco di ultime foto estratte per articolo. No? La richiesta mi sembra ovvia. Estrarre l'ultima foto per singolo articolo.
O, magari mi sbaglio, lo scopriremo solo quando si deciderà a rispondere al post
-
Forse è come dici tu, Ultima. Ma io sono abituato a basarmi su quel che vedo scritto e non su mie supposizioni. Al momento quel che vedo scritto è che lui vuole un elenco delle ultime foto estratte per articolo. Anche a me la richiesta sembra ovvia, tanto ovvia che è scritta.
Può essere che enricocarli si sia espresso male e voglia quel che dici tu, ma se rimaniamo ai fatti la richiesta è di un elenco.
-
Ma non c'è scritto da nessuna parte che vuole un elenco. Altrimenti tutta sta polemica è inutile ovvio
-
il risultato dovrebbe essere:
13 tavolara_personaggi-vari_40-pupazzi_colezione-tilo... 8
20 0000000903-piatto.jpg 9aspettiamo il responso.... sempre se arriva...
-
Mamma mia, cheddire... grazie 1000 per le numerose risposte; non credevo di riceverne così tante. Grazie davvero! Complimenti davvero per il forum, è un qualcosa di veramente grande e importante.
Scusate se non sono tempestivo nelle risposte, è che in questo periodo non ho tempo, tra lavoro, tra un po' mi sposo :D, casa ed altri impegni veramente faccio fatica a rispondere;cmq: forse sono stato un po' frettoloso nella richiesta; in verità ho bisogno di qualcosa di più complesso, vediamo se riesco a spiegarmi:
ho 2 tabelle:
** ARTICOLI**
[TABLE="class: grid"]
[TD]**id
**[/TD]
[TD]**categoria_id
**[/TD]
[TD]**title
**[/TD]
[TD]**description
**[/TD]
[TD]**keywords
**[/TD]
[TD]**data
**[/TD]
[TD]**h1
**[/TD]
[TD]**h2
**[/TD]
[TD]**testo
**[/TD]
[TD]**visibile
**[/TD]
[/TR][TD]1
[/TD]
[TD]1
[/TD]
[TD]title 1
[/TD]
[TD]description 1
[/TD]
[TD]keywords
[/TD]
[TD]17 Gennaio 2015
[/TD]
[TD]Titolo 1
[/TD]
[TD]Sottotitolo 1
[/TD]
[TD]Testo 1
[/TD]
[TD]si
[/TD]
[/TR][TD]2
[/TD]
[TD]5
[/TD]
[TD]title 2
[/TD]
[TD]description 2
[/TD]
[TD]keywords
[/TD]
[TD]16 Gennaio 2015
[/TD]
[TD]Titolo 2
[/TD]
[TD]Sottotitolo 2
[/TD]
[TD]Testo 2
[/TD]
[TD]no
[/TD]
[/TR][TD]3
[/TD]
[TD]8
[/TD]
[TD]title 3
[/TD]
[TD]description 3
[/TD]
[TD]keywords[/TD]
[TD]15 Gennaio 2015
[/TD]
[TD]Titolo 3
[/TD]
[TD]Sottotitolo 3
[/TD]
[TD]Testo 3
[/TD]
[TD]si
[/TD]
[/TR][TD]4
[/TD]
[TD]6
[/TD]
[TD]title 4
[/TD]
[TD]description 4
[/TD]
[TD]keywords
[/TD]
[TD]14 Gennaio 2015
[/TD]
[TD]Titolo 4
[/TD]
[TD]Sottotitolo 4
[/TD]
[TD]Testo 4
[/TD]
[TD]si
[/TD]
[/TR][TD]5
[/TD]
[TD]4
[/TD]
[TD]title 5
[/TD]
[TD]description 5
[/TD]
[TD]keywords
[/TD]
[TD]13 Gennaio 2015
[/TD]
[TD]Titolo 5
[/TD]
[TD]Sottotitolo 5
[/TD]
[TD]Testo 5
[/TD]
[TD]si
[/TD]
[/TR][TD]6
[/TD]
[TD]1
[/TD]
[TD]title 6
[/TD]
[TD]description 6
[/TD]
[TD]keywords
[/TD]
[TD]12 Gennaio 2015
[/TD]
[TD]Titolo 6
[/TD]
[TD]Sottotitolo 6
[/TD]
[TD]Testo 6
[/TD]
[TD]no
[/TD]
[/TR][TD]7
[/TD]
[TD]2
[/TD]
[TD]title 7
[/TD]
[TD]description 7
[/TD]
[TD]keywords
[/TD]
[TD]11 Gennaio 2015
[/TD]
[TD]Titolo 7
[/TD]
[TD]Sottotitolo 7
[/TD]
[TD]Testo 7
[/TD]
[TD]si
[/TD]
[/TR][TD]8
[/TD]
[TD]3
[/TD]
[TD]title 8
[/TD]
[TD]description 8
[/TD]
[TD]keywords
[/TD]
[TD]10 Gennaio 2015
[/TD]
[TD]Titolo 8
[/TD]
[TD]Sottotitolo 8
[/TD]
[TD]Testo 8
[/TD]
[TD]no
[/TD]
[/TR][TD]9
[/TD]
[TD]2
[/TD]
[TD]title 9
[/TD]
[TD]description 9
[/TD]
[TD]keywords
[/TD]
[TD]9 Gennaio 2015
[/TD]
[TD]Titolo 9
[/TD]
[TD]Sottotitolo 9
[/TD]
[TD]Testo 9
[/TD]
[TD]si
[/TD]
[/TR][TD]10
[/TD]
[TD]4
[/TD]
[TD]title 10
[/TD]
[TD]description 10
[/TD]
[TD]keywords
[/TD]
[TD]8 Gennaio 2015
[/TD]
[TD]Titolo 10
[/TD]
[TD]Sottotitolo 10
[/TD]
[TD]Testo 10
[/TD]
[TD]si
[/TD]
[/TR]
[/TABLE]FOTO
[TABLE="class: grid"]
[TD]**id
**[/TD]
[TD]**foto
**[/TD]
[TD]**id_articolo
**[/TD]
[/TR][TD]1
[/TD]
[TD]foto1.jpg
[/TD]
[TD]1
[/TD]
[/TR][TD]2
[/TD]
[TD]foto2.jpg
[/TD]
[TD]5
[/TD]
[/TR][TD]3
[/TD]
[TD]foto3.jpg
[/TD]
[TD]5
[/TD]
[/TR][TD]4
[/TD]
[TD]foto4.jpg
[/TD]
[TD]7
[/TD]
[/TR][TD]5
[/TD]
[TD]foto5.jpg
[/TD]
[TD]10
[/TD]
[/TR][TD]6
[/TD]
[TD]foto6.jpg
[/TD]
[TD]1
[/TD]
[/TR][TD]7
[/TD]
[TD]foto7.jpg
[/TD]
[TD]4
[/TD]
[/TR][TD]8
[/TD]
[TD]foto8.jpg
[/TD]
[TD]7
[/TD]
[/TR][TD]9
[/TD]
[TD]foto9.jpg
[/TD]
[TD]4
[/TD]
[/TR][TD]10
[/TD]
[TD]foto10.jpg
[/TD]
[TD]1
[/TD]
[/TR][TD]11
[/TD]
[TD]foto11.jpg
[/TD]
[TD]4
[/TD]
[/TR][TD]12
[/TD]
[TD]foto12.jpg
[/TD]
[TD]5
[/TD]
[/TR][TD]13
[/TD]
[TD]foto13.jpg
[/TD]
[TD]7
[/TD]
[/TR][TD]14
[/TD]
[TD]foto14.jpg
[/TD]
[TD]4
[/TD]
[/TR][TD]15
[/TD]
[TD]foto15.jpg
[/TD]
[TD]3
[/TD]
[/TR][TD]16
[/TD]
[TD]foto16.jpg
[/TD]
[TD]2
[/TD]
[/TR][TD]17
[/TD]
[TD]foto17.jpg
[/TD]
[TD]3
[/TD]
[/TR][TD]18
[/TD]
[TD]foto18.jpg
[/TD]
[TD]2
[/TD]
[/TR][TD]19
[/TD]
[TD]foto19.jpg
[/TD]
[TD]6
[/TD]
[/TR][TD]20
[/TD]
[TD]foto20.jpg
[/TD]
[TD]3
[/TD]
[/TR][TD]21
[/TD]
[TD]foto21.jpg
[/TD]
[TD]2
[/TD]
[/TR][TD]22
[/TD]
[TD]foto22.jpg
[/TD]
[TD]8
[/TD]
[/TR][TD]23
[/TD]
[TD]foto23.jpg
[/TD]
[TD]9
[/TD]
[/TR][TD]24
[/TD]
[TD]foto24.jpg
[/TD]
[TD]8
[/TD]
[/TR][TD]25
[/TD]
[TD]foto25.jpg
[/TD]
[TD]6
[/TD]
[/TR][TD]26
[/TD]
[TD]foto26.jpg
[/TD]
[TD]9
[/TD]
[/TR][TD]27
[/TD]
[TD]foto27.jpg
[/TD]
[TD]8
[/TD]
[/TR][TD]28
[/TD]
[TD]foto28.jpg
[/TD]
[TD]10
[/TD]
[/TR][TD]29
[/TD]
[TD]foto29.jpg
[/TD]
[TD]9
[/TD]
[/TR][TD]30
[/TD]
[TD]foto30.jpg
[/TD]
[TD]6
[/TD]
[/TR]
[/TABLE]Vorrei Estrarre da queste 2 tabelle h1, h2 e una foto degli ultimi 3 articoli con visibile = si ordinati per data, la foto deve essere l'ultima inserita (con id più alto).
Il risultato deve essere:
[TABLE="class: grid"]
[TD]id
[/TD]
[TD]categoria_id
[/TD]
[TD]title
[/TD]
[TD]description
[/TD]
[TD]keywords
[/TD]
[TD]data
[/TD]
[TD]h1
[/TD]
[TD]h2
[/TD]
[TD]testo
[/TD]
[TD]visibile
[/TD]
[TD]id
[/TD]
[TD]foto
[/TD]
[TD]id_articolo
[/TD]
[/TR][TD]1
[/TD]
[TD]1
[/TD]
[TD]Title 1
[/TD]
[TD]Description 1
[/TD]
[TD]Keywords 1
[/TD]
[TD]17 Gennaio 2015
[/TD]
[TD]Titolo 1
[/TD]
[TD]Sottotitolo 1
[/TD]
[TD]Testo 1
[/TD]
[TD]si
[/TD]
[TD]10
[/TD]
[TD]foto10.jpg
[/TD]
[TD]1
[/TD]
[/TR][TD]3
[/TD]
[TD]8
[/TD]
[TD]Title 3
[/TD]
[TD]Description 3
[/TD]
[TD]Keywords 3
[/TD]
[TD]15 Gennaio 2015
[/TD]
[TD]Titolo 3
[/TD]
[TD]Sottotitolo 3
[/TD]
[TD]Testo 3
[/TD]
[TD]si
[/TD]
[TD]20
[/TD]
[TD]foto20.jpg
[/TD]
[TD]3
[/TD]
[/TR][TD]4
[/TD]
[TD]6
[/TD]
[TD]Title 4
[/TD]
[TD]Description 4
[/TD]
[TD]Keywords 4
[/TD]
[TD]14 Gennaio 2015
[/TD]
[TD]Titolo 4
[/TD]
[TD]Sottotitolo 4
[/TD]
[TD]Testo 4
[/TD]
[TD]si
[/TD]
[TD]14
[/TD]
[TD]foto14.jpg
[/TD]
[TD]4
[/TD]
[/TR]
[/TABLE]Grazie 1000 per la disponibilità e la pazienza
Buon week end a tutti
-
Quindi abbiamo appurato che è un elenco... se però prima era poco chiaro, ora è anche peggio.
(ps. Auguri per il matrimonio... <- ... tu. )
-
:D:D:D:D:D
Grazie mille oslino!
Pensavo di essere stato chiaro e invece no... porta pazienza.
Dunque ci provo ancora:
Mi servono gli ultimi 3 articoli in ordine cronologico dal più recente con visibile = si
per cui:
[TABLE="class: grid"]
[TD]**id
**[/TD]
[TD]**categoria_id
**[/TD]
[TD]**title
**[/TD]
[TD]**description
**[/TD]
[TD]**keywords
**[/TD]
[TD]**data
**[/TD]
[TD]**h1
**[/TD]
[TD]**h2
**[/TD]
[TD]**testo
**[/TD]
[TD]**visibile
**[/TD]
[/TR][TD]1[/TD]
[TD]1[/TD]
[TD]title 1[/TD]
[TD]description 1[/TD]
[TD]keywords[/TD]
[TD]17 Gennaio 2015[/TD]
[TD]Titolo 1[/TD]
[TD]Sottotitolo 1[/TD]
[TD]Testo 1[/TD]
[TD]si[/TD]
[/TR][TD]3
[/TD]
[TD]8[/TD]
[TD]title 3[/TD]
[TD]description 3[/TD]
[TD]keywords[/TD]
[TD]15 Gennaio 2015[/TD]
[TD]Titolo 3[/TD]
[TD]Sottotitolo 3[/TD]
[TD]Testo 3[/TD]
[TD]si[/TD]
[/TR][TD]4
[/TD]
[TD]6[/TD]
[TD]title 4[/TD]
[TD]description 4[/TD]
[TD]keywords[/TD]
[TD]14 Gennaio 2015[/TD]
[TD]Titolo 4[/TD]
[TD]Sottotitolo 4[/TD]
[TD]Testo 4[/TD]
[TD]si[/TD]
[/TR]
[/TABLE]per ognuno di questi articoli mi serve l'ultima foto inserita, quella con l'id più alto
per cui:
[TABLE="class: grid"]
[TD]**id
**[/TD]
[TD]**foto
**[/TD]
[TD]**id_articolo
**[/TD]
[/TR][TD]10
[/TD]
[TD]foto10.jpg[/TD]
[TD]1[/TD]
[/TR][TD]14
[/TD]
[TD]foto14.jpg[/TD]
[TD]4[/TD]
[/TR][TD]20
[/TD]
[TD]foto20.jpg[/TD]
[TD]3[/TD]
[/TR]
[/TABLE]poi combinare queste 2 tabelle, io necessito soltanto di h1, h2 e foto
per cui:
[TABLE="class: grid"]
[TD]h1
[/TD]
[TD]h2
[/TD]
[TD]foto
[/TD]
[/TR][TD]Titolo 1
[/TD]
[TD]Sottotitolo 1
[/TD]
[TD]foto10.jpg
[/TD]
[/TR][TD]Titolo 3
[/TD]
[TD]Sottotitolo 3
[/TD]
[TD]foto20.jpg
[/TD]
[/TR][TD]Titolo 4
[/TD]
[TD]Sottotitolo 4
[/TD]
[TD]foto14.jpg
[/TD]
[/TR]
[/TABLE]spero di essere stato più chiaro
ringrazio in anticipo tutticiao!
-
La butto lì...
SELECT h1, h2, foto FROM articoli, foto WHERE articoli.visibile ="si" AND articoli.id = foto.id_articolo DESC LIMIT 3
-
Ho ricostruito le tue tabelle.
[PHP]<?php
require_once'connect.php';
$query = "SELECT DISTINCT foto.id_articolo FROM foto, articoli WHERE articoli.visibile ='si' ORDER BY foto.id_articolo DESC LIMIT 3";
$a = $mysqli_query($conn, $query);
$c = mysqli_num_rows($a);
while($r = mysqli_fetch_array($a)){
$array[] = $r[0];
}
echo '<pre>'; // DEBUG
var_dump($array); // DEBUG
echo '</pre>'; // DEBUG
for($i=0; $i < $c; $i++){
$query2 = "SELECT foto.foto, articoli.h1, articoli.h2 FROM foto, articoli WHERE foto.id_articolo = '$array*' AND articoli.id = '$array*' ORDER BY foto.id DESC LIMIT 1";
echo $query2 . '<br />'; // DEBUG
$result = $mysqli_query($conn, $query2);
while($row = mysqli_fetch_array($result)){
echo $row['foto'] . ' ' . 'ciclo while ' . $i . '<br />';
echo $row['h1'] . ' ' . $row['h2'] . '<br />';
}
echo 'ciclo for ' . $i . '<br />'; // DEBUG
}
?>[/PHP]
Funziona.
Mi devi una pizza.
Ciao.
-
Grande Oslino!
appena ho tempo provo!
se capiti a vicenza volentieri per la pizza!
grazie ancora!
:D:D:D:D:D:D:D:D:D:D
-
Fammi sapere se va.
E non fare il furbo, la pizza me la devi anche se passi tu a Rimini!EDIT:
uhmmm... riguardando il mio codice ho il dubbio che non vada come dovrebbe... ci devo lavorare sopra... non posso perdermi una pizza gratis!!!
-
Prova con questo. E' abbastanza contorto e forse si poteva fare di meglio con qualche trucco da guru SQL.
Però se funziona aggiungi una birra... media... bionda. E dessert.
Grazie.
[PHP]
<?php
require_once'connect.php';
// recupero i singoli id_articolo delle foto
$query = "SELECT DISTINCT foto.id_articolo FROM foto ORDER BY id_articolo DESC";
$a = mysqli_query($conn, $query);
// metto ogni id_articolo in un array
while($r = mysqli_fetch_array($a)){
$array[] = $r[0];
}
echo '<pre>'; // DEBUG (eliminare)
var_dump($array); // DEBUG (eliminare)
echo '</pre>'; // DEBUG (eliminare)
$x = 0;
$i = 0;while($i <= count($array)-1){ // faccio un ciclo su tutti i valori dell'array. Il ciclo si ferma all'esaurimento dell'array o al recupero di 3 articoli (riga 29)...
$query2 = "SELECT foto.foto, h1, h2 FROM foto, articoli WHERE foto.id_articolo = '$array*' AND articoli.id = '$array*' AND articoli.visibile = 'si' ORDER BY foto.id DESC LIMIT 1"; echo $query2 . '<br />'; // DEBUG (eliminare) $result = mysqli_query($conn, $query2); $i++; // passo al valore successivo dell'array if(mysqli_num_rows($result) == 0) continue; // se con l'id_articolo non c'è un articolo "visibile" riprendo il ciclo da capo altrimenti proseguo... $x++; //... inserendo il primo articolo e aumentando il contatore while($row = mysqli_fetch_array($result)){ echo "<h1>Articolo $x </h1>"; // DEBUG (eliminare) echo $row['foto'] . '<br />'; echo $row['h1'] . ' ' . $row['h2'] . '<br />'; } if($x == 3) break; // quando il contatore degli articoli recuperati arriva a 3 mi fermo
}
?>
[/PHP]
Ricordati di mettere i vari die() e controlli di errore.
Ciao.