• User Attivo

    aiuto select

    Buonasera a tutti,

    ho una tabella di questo tipo:

    id - foto - id_articolo
    9 foto-gianluca-vassallo.jpg 8
    10 tavolara-depero-foto-ffm.jpg 8
    11 tavolara_cavalcata-sarda_128-pupazzi_anni-50_colle... 8
    12 tavolara_depero_008-foto-gianluca-vassallo.jpg 8
    13 tavolara_personaggi-vari_40-pupazzi_colezione-tilo... 8
    14 0000000903-3124_museo-ceramica_llr.jpg 9
    15 0000000903-3136_museo-ceramica_llr.jpg 9
    16 0000000903-3141_museo-ceramica_llr.jpg 9
    17 0000000903-3146_museo-ceramica_llr.jpg 9
    18 0000000903-3150_museo-ceramica_llr.jpg 9
    19 0000000903-4049_museo-ceramica_lr.jpg 9
    20 0000000903-piatto.jpg 9

    il numero a dx è l'id dell'articolo a cui è associata la foto;
    il numero a sx è l'id della foto,
    il nome al centro è il nome della foto;

    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 9

    avete qualche idea?

    grazie 1000
    buona serata


  • User Attivo

    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


  • User

    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.ID

    Facci sapere
    Michele


  • Moderatore

    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"


  • User

    @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....


  • User Attivo

    @OsteriaORistorante said:

    Sei sicuro che il risultato è quello atteso da enricocarli???
    Prova a leggere bene la richiesta....
    Quoto.


  • Moderatore

    vorrei estrarre con una query l'ultima foto (ordine per id) associata ad un singolo articolo;

    Io si, te?


  • User Attivo

    @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 9

    Io pure.


  • User

    OK, Ultima si deve rileggere la richiesta....


  • Moderatore

    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


  • User Attivo

    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.


  • Moderatore

    Ma non c'è scritto da nessuna parte che vuole un elenco. Altrimenti tutta sta polemica è inutile ovvio


  • User

    il risultato dovrebbe essere:

    13 tavolara_personaggi-vari_40-pupazzi_colezione-tilo... 8
    20 0000000903-piatto.jpg 9

    aspettiamo il responso.... sempre se arriva...


  • User Attivo

    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


  • User Attivo

    Quindi abbiamo appurato che è un elenco... se però prima era poco chiaro, ora è anche peggio.

    (ps. Auguri per il matrimonio... :frust:<- ... tu. )


  • User Attivo

    :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 tutti

    ciao!


  • User Attivo

    La butto lì...

    SELECT h1, h2, foto FROM articoli, foto WHERE articoli.visibile ="si" AND articoli.id = foto.id_articolo DESC LIMIT 3
    

  • User Attivo

    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.


  • User Attivo

    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


  • User Attivo

    Fammi sapere se va.
    E non fare il furbo, la pizza me la devi anche se passi tu a Rimini! :festa:

    EDIT:
    uhmmm... riguardando il mio codice ho il dubbio che non vada come dovrebbe... ci devo lavorare sopra... non posso perdermi una pizza gratis!!!