- Home
- Categorie
- Coding e Sistemistica
- PHP
- aiuto select
-
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.
-
Ci provo anch'io... c'è in ballo una pizza...
Provata e funzionante,
per Mysql:SELECT * FROM ( SELECT A2.* FROM (SELECT ID FROM ARTICOLI WHERE ARTICOLI.visibile="si" ORDER BY DATA DESC LIMIT 3) A1, ARTICOLI A2 WHERE A1.ID=A2.ID ) A LEFT JOIN ( SELECT B2.* FROM (SELECT id_articolo, MAX(id) AS MAX_ID FROM FOTO GROUP BY ID_ARTICOLO) B1, FOTO B2 WHERE B1.MAX_ID=B2.ID ) B WHERE A.ID=B.ID_ARTICOLO
per MsAccess:
SELECT * FROM ( SELECT A2.* FROM (SELECT TOP 3 ID FROM ARTICOLI WHERE ARTICOLI.visibile="si" ORDER BY DATA DESC) A1, ARTICOLI A2 WHERE A1.ID=A2.ID ) A LEFT JOIN ( SELECT B2.* FROM (SELECT id_articolo, MAX(id) AS MAX_ID FROM FOTO GROUP BY ID_ARTICOLO) B1, FOTO B2 WHERE B1.MAX_ID=B2.ID ) B WHERE A.ID=B.ID_ARTICOLO
Ciao e alla prossima
-
Lasciamene una fetta...
-
Ragazzi devo mettere via i soldi per la cucina, non posso pagare pizze a tutti :D:D:D:D:D
Una domanda per OsteriaORistorante: vedo che nella query ci sono A1, A2, B1, B2
Perdonate l'ignoranza e la domanda forse molto banale, ma che cosa sono?
grazie ancora per le risposte
buona giornata a tutti
-
@enricocarli said:
Ragazzi devo mettere via i soldi per la cucina, non posso pagare pizze a tutti :D:D:D:D:D
Una domanda per OsteriaORistorante: vedo che nella query ci sono A1, A2, B1, B2
Perdonate l'ignoranza e la domanda forse molto banale, ma che cosa sono?
grazie ancora per le risposte
buona giornata a tuttiCiao Enrico,
A1, A2, B1, B2 sono gli alias delle tabelle o delle query, cerca "sql alias" su googleMichele
-
annn ho capito...
però mi da errore sul phpmyadmin:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE A.ID=B.ID_ARTICOLO' at line 13
forse è la mia versione di php?
bho!
-
Cmq sia...
ho quasi risolto; ho scritto:
SELECT * FROM articoli LEFT OUTER JOIN foto ON articoli.id=foto.id_articolo WHERE visibile = 'si' GROUP BY id_articolo ORDER BY data DESC LIMIT 0, 3;
l'unico problema è che non mi prende l'ultima foto, bensì la prima...
Il GROUP BY tiene buono il primo risultato, gli altri li esclude, che voi sappiate c'è il sistema per farlo funzionare al contrario?
grazie infinite a tutti
siete gentilissimi
buona serata
-
CORRETTO:
Ci provo anch'io... c'è in ballo una pizza...
Provata e funzionante,
per Mysql:SELECT * FROM ( SELECT A2.* FROM (SELECT ID FROM ARTICOLI WHERE ARTICOLI.visibile="si" ORDER BY DATA DESC LIMIT 3) A1, ARTICOLI A2 WHERE A1.ID=A2.ID ) A LEFT JOIN ( SELECT B2.* FROM (SELECT id_articolo, MAX(id) AS MAX_ID FROM FOTO GROUP BY ID_ARTICOLO) B1, FOTO B2 WHERE B1.MAX_ID=B2.ID ) B ON A.ID=B.ID_ARTICOLO
per MsAccess:
SELECT * FROM ( SELECT A2.* FROM (SELECT TOP 3 ID FROM ARTICOLI WHERE ARTICOLI.visibile="si" ORDER BY DATA DESC) A1, ARTICOLI A2 WHERE A1.ID=A2.ID ) A LEFT JOIN ( SELECT B2.* FROM (SELECT id_articolo, MAX(id) AS MAX_ID FROM FOTO GROUP BY ID_ARTICOLO) B1, FOTO B2 WHERE B1.MAX_ID=B2.ID ) B ON A.ID=B.ID_ARTICOLO
Ciao e alla prossima
-
:():
-
mi son dimenticato di indicare qual è la modifica.... "ON A.ID=B.ID_ARTICOLO" al posto di "WHERE A.ID=B.ID_ARTICOLO"
-
Ciao OsteriaORistorante!
ho scritto:
SELECT * FROM (
SELECT A2.* FROM
(SELECT ID
FROM ARTICOLI
WHERE ARTICOLI.visibile="si"
ORDER BY DATA DESC LIMIT 3) A1, ARTICOLI A2 ON A.ID=B.ID_ARTICOLO
) A LEFT JOIN (
SELECT B2.* FROM
(SELECT id_articolo, MAX(id) AS MAX_ID
FROM FOTO
GROUP BY ID_ARTICOLO) B1, FOTO B2
WHERE B1.MAX_ID=B2.ID
) B ON A.ID=B.ID_ARTICOLOma da errore:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ON A.ID=B.ID_ARTICOLO ) A LEFT JOIN ( SELECT B2.* FROM (SELECT id_articolo, M' at line 6
ma tu hai provato con la mia query?
SELECT * FROM articoli LEFT OUTER JOIN foto ON articoli.id=foto.id_articolo WHERE visibile = 'si' GROUP BY id_articolo ORDER BY data DESC LIMIT 0, 3;
l'unico problema è che prende la prima foto e non l'ultima, colpa del GROUP BY se non sbaglio,
non si può dirgli in qualche modo "Ragruppa ma parti da in fondo"?
grazie mille a tutti
buona serata