Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14

Discussione: Aiuto su selezione

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2000
    Messaggi
    129

    Aiuto su selezione

    Ciao a tutti, ho questo tipo di problema:

    Devo visualizzare una lista delle ultime 10 news (10 posts) con i relativi commenti.
    Avrò quindi 2 tabelle, una con tutti i post un'altra con tutti i commenti.
    I commenti sono legati ai rispettivi post tramite ID univoco.

    schema:

    post(id=1)
    commento(id=1)
    commento(id=1)
    commento(id=1)

    post(id=2)
    commento(id=2)
    commento(id=2)
    commento(id=2)

    etc...

    è possibile fare questo con una singola join?

  2. #2
    Una cosa di questo tipo?

    codice:
    SELECT *
    FROM ( SELECT * FROM Post ORDER BY ora_e_data DESC LIMIT 10) AS P
         INNER JOIN 
    Commenti C on(P.id = C.id_del_post)

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2000
    Messaggi
    129
    Grazie della risposta scimmiaparlante. ho provato la tua query e ottengo una cosa tipo:

    post1 comment1
    post1 comment2
    post1 comment3
    post2 comment1
    .....
    è corretto?
    è possibile avere questo risultato dentro un array per evitare i duplicati dei post?

  4. #4
    Beh, ora hai i dati che servono, poi quel che ci fai non è più un problema di database ma è relativo al linguaggio dal quale stai lanciando la query, che peraltro non sappiamo. Basta che quando li vai a rileggere stai attento a quando cambia l'id e spezzi i vari post.

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2000
    Messaggi
    129
    Si in effeti non è questa la sezione per l'array, ho risolto in ogni caso. Voglio chiederti: ho ottenuto lo stesso risultato con una query del genere: (semplice join senza subquery)

    SELECT posts.guid, comments.comment_link FROM posts INNER JOIN comments WHERE ID = comment_post_ID

    Sono equivalenti secondo te?

  6. #6
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Quote Originariamente inviata da hhchnos Visualizza il messaggio
    ........ Sono equivalenti secondo te?
    Manca il Limit(10)

    .

  7. #7
    Si in effeti non è questa la sezione per l'array, ho risolto in ogni caso. Voglio chiederti: ho ottenuto lo stesso risultato con una query del genere: (semplice join senza subquery)

    SELECT posts.guid, comments.comment_link FROM posts INNER JOIN comments WHERE ID = comment_post_ID

    Sono equivalenti secondo te?
    Va bene se poi i primi 10 li selezioni a posteriori, perchè la tua query prende tutto.
    Altrimenti, inserendo LIMIT 10, estrai non 10 post ma 10 commenti, visto che a un post possono essere abbinato più commenti ma non viceversa. Non essendoci un ordinamento non sono neanche gli ultimi.
    Con la query sopra il risultato è già tutto e solo il necessario.

  8. #8
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Se preferisci (solo a titolo accademico) una alternativa a quanto propone corretamente scimmiaparlante al #2 è questa:
    codice:
    SELECT 
    V1.T1Key, V1.T1Data, V1.T1eccetera, V2.T2Key, V2.T2KeyEsterna, V2.T2eccetera
    FROM 
    T1 AS V1 
    LEFT JOIN 
    T2 AS V2 
    ON V1.T1Key = V2.T2KeyEsterna
    WHERE 
    ((SELECT Count(X.T1Key) FROM T1 AS X WHERE (X.T1Data>=V1.T1Data))<10.5)
    ;
    ma da qualche parte il 10 lo devi mettere perforza

    .

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2000
    Messaggi
    129
    Grazie ragazzi, si vede che sono un poa rrugginito con sql ho fatto le prove con pochi record e il risultato pareva uguale.

    Insomma vi devo una birretta

  10. #10
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Quote Originariamente inviata da hhchnos Visualizza il messaggio
    ........ Insomma vi devo una birretta
    Io sono astemio,
    quindi una Coca Zero Ghiacciata

    .

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.