Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1
    Utente di HTML.it L'avatar di andbaz
    Registrato dal
    Jul 2011
    Messaggi
    441

    [MYSQL] Problema con interrogazione database.

    Ho due tabelle, una stato e una commento, ogni stato ha dei relativi commenti, $text è il testo dello stato, mentre $quote è quello del commento, il problema è che con questa interrogazione del database mi vengono stampati solo, e dico solo, gli stati con almeno un commento ovviamente, come faccio x dire al compilatore di stampare anche quelli senza nessuno di questi? GRAZIE

    $sql = "SELECT * FROM stato, commento WHERE stato.IDS = commento.IDS";
    $query = mysql_query($sql) or die (mysql_error());

    while ($row = mysql_fetch_assoc($query)) {

    $text = $row['TESTO'];
    $quote = $row['COMMENTO'];

    $stato = "$text $quote";

    echo $stato;
    $text = NULL;

    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    1,469
    LEFT JOIN

  3. #3
    Utente di HTML.it L'avatar di andbaz
    Registrato dal
    Jul 2011
    Messaggi
    441
    GRANDE, RISOLTO, l'aria di n00b inizia a diminuire

  4. #4
    Utente di HTML.it L'avatar di andbaz
    Registrato dal
    Jul 2011
    Messaggi
    441
    Ultimo problema, si spera: ogni volta inserisco dei commenti in uno stato mi vengono stampati tanti stati (tutti uguali) quanti i commenti, mi spiego?
    Cioè se ho due commenti in uno stato, mi vengono stampati 2 stati con un commento scritto sotto per ogni uno.

    Codice PHP:
    $sql "SELECT * FROM stato LEFT JOIN commento ON stato.IDS = commento.IDS_C ORDER BY IDS DESC";            
    $query mysql_query($sql) or die (mysql_error());

    while (
    $row mysql_fetch_assoc($query)) {

    $text $row['TESTO'];
    $quote $row['COMMENTO'];    

    $stato "$text $quote";

    echo 
    $stato;    
    $text NULL;



  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    268
    non si può avere tutto nella vita... se usi join come istruzione ti restituisce più righe con il campo ripetuto, è giusto così. Se ti serve soltanto una riga puoi fare una group by.

    Select * from stato left join commento on stato.campo1=commento.campo1 group by commento.campo_commento

  6. #6
    Utente di HTML.it L'avatar di andbaz
    Registrato dal
    Jul 2011
    Messaggi
    441
    Vero, però ci deve essere una soluzione dai!

    VI descrivo il mio database:

    stato
    IDS | IDU | NOME | COGNOME | TESTO | DATA | ORA
    IDS = id dello stato, del post pubblicato da un utente
    IDU = id dell'utente del post

    commento
    IDC | IDS_C | IDU_C | NOME_C | COGNOME_C | COMMENTO | DATA_C | ORA_C
    IDC = id del commento
    IDS_C = id dello stato commentato
    IDU_C = id dell'utente che ha pubblicato il commento sullo stato



    Con questo script invece mi stampa tutti gli stati, con un max di commenti pari ad uno.

    $sql = "SELECT * FROM stato LEFT JOIN commento ON stato.IDS = commento.IDS_C GROUP BY stato.IDS ORDER BY IDS DESC";
    $query = mysql_query($sql) or die (mysql_error());

    while ($row = mysql_fetch_assoc($query)) {

    $text = $row['TESTO'];
    $quote = $row['COMMENTO'];

    $stato = "$text $quote";

    echo $stato;
    $text = NULL;

    }

  7. #7
    Ma, di preciso, perchè vuoi tutto in un unico recordset??? Certo che si può fare, ma sinceramente non l'ho mai visto fare, o almeno non in un caso come questo...
    Comunque, se proprio ci tieni:
    Fai una query dove tiri fuori tutti gli stati, assegni una variabile numerica a un campo "ordine" e la incrementi di 1. Deve esserci anche un campo "commento" che rimane vuoto ('' AS commento). Poi fai una UNION fra questa query e la famosa JOIN di prima, dove invece è il campo stato a rimanere vuoto. Nella JOIN assegni la variabile a un campo "ordine", ma non la incrementi. Alla UNION dai un ORDER BY ordine ASC, LENGTH(stato) ASC, id DESC.

    Io te l'ho detto perchè l'hai chiesto e penso che se uno vuole morire soffrendo deve essere libero di poterlo fare, ma ti ripeto che non ha senso.

  8. #8
    Utente di HTML.it L'avatar di andbaz
    Registrato dal
    Jul 2011
    Messaggi
    441
    Sisi, forse hai ragione, però cosa vuol dire recordset di preciso? Tanto per evitare equivoci.
    Cmq non credo di avere capito tutto di quello che mi hai detto, se mi butteresti giù due tre righe di codice mi faresti immensamente felice!

  9. #9
    Volevo dire che vuoi i risultati tutti insieme, che è una cosa stranissima.
    Ti ho detto la query in teoria, però io non soffro gratis: se mi fai una domanda specifica ti ripsondo, se te la devo scrivere tutta io voglio i sordi! hehehe

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    268
    andbaz hai le idee un pò confuse. fatti uno schema delle tabelle anche con excel va bene, prova a crearti manualmente la tabella di risultato così vedi quali possono essere i limiti delle query. Poi ricordarti che non tutto si può ottenere dalle query spesso bisogna creare dei batch per gestire e/o manipolare i risultati.

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.