• User

    MySql Query con doppio operatore AND

    Ciao ragazzi, intanto grazie per l'add.
    Sono a chiedervi un aiuto per la sintassi di una query. Funziona tutto correttamente ma quando aggiungo un altro operatore AND non mi trova nessun risultato.
    si tratta di tirar fuori dei dati da un db wordpress e creare un file pdf
    //query corretta

    SELECT * FROM ot_posts INNER JOIN ot_postmeta ON ot_posts.ID = ot_postmeta.post_id AND ot_postmeta.meta_key = 'nominativo' WHERE post_type = 'iscritti' ORDER BY ot_posts.post_title ASC
    

    //query sbagliata

    SELECT * FROM ot_posts INNER JOIN ot_postmeta ON ot_posts.ID = ot_postmeta.post_id AND ot_postmeta.meta_key = 'nominativo' AND ot_postmeta.meta_key = 'indirizzo' WHERE post_type = 'iscritti' ORDER BY ot_posts.post_title ASC
    

    Grazie mille


  • User

    Aggiornamento query

    ho implementato le parentesi ma mi restituisce due record, uno con il campo nominativo e uno con il campo indirizzo. c'è modo di avere tutto in un unico record?
    grazie ancora

    
    SELECT * 
    FROM (ot_posts 
    INNER JOIN ot_postmeta 
    	ON ot_posts.ID = ot_postmeta.post_id ) 
    WHERE post_type = 'iscritti' 
    AND (ot_postmeta.meta_key = 'nominativo' 
    OR ot_postmeta.meta_key = 'indirizzo') 
    ORDER BY ot_posts.post_title ASC
    
    

  • Moderatore

    Ciao,
    prova così:

    
    SELECT CONCAT(nominativo, ' ', indirizzo)
    FROM (ot_posts 
    INNER JOIN ot_postmeta 
    	ON ot_posts.ID = ot_postmeta.post_id ) 
    WHERE post_type = 'iscritti' 
    AND (ot_postmeta.meta_key = 'nominativo' 
    OR ot_postmeta.meta_key = 'indirizzo') 
    ORDER BY ot_posts.post_title ASC
    
    

    :ciauz:


  • User

    @Shad said:

    Ciao,
    prova così:

    >
    SELECT CONCAT(nominativo, ' ', indirizzo)
    FROM (ot_posts 
    INNER JOIN ot_postmeta 
        ON ot_posts.ID = ot_postmeta.post_id ) 
    WHERE post_type = 'iscritti' 
    AND (ot_postmeta.meta_key = 'nominativo' 
    OR ot_postmeta.meta_key = 'indirizzo') 
    ORDER BY ot_posts.post_title ASC
    
    >```
    
    :ciauz:
    
    Messaggio di errore
    Unknown column nominativo in field list

  • Moderatore

    Sì beh, io non so come si chiamano le colonne da te. Ho concatenato una colonna "nominativo" con una "indirizzo" in questo punto:

    SELECT CONCAT(nominativo, ' ', indirizzo)

    sostituiscile con i nomi giusti delle colonne nel tuo database.


  • User

    nominativo e indirizzo sono due campi della tabella postmeta

    devo usare postmeta.meta_key = 'nominativo'?


  • User

    Ho risolto mettendo diversi inner e usando gli alias

    SELECT *
    FROM ot_posts
    INNER JOIN ot_postmeta AS m1
      ON ( ot_posts.ID = m1.post_id )
    INNER JOIN ot_postmeta AS m2
      ON ( ot_posts.ID = m2.post_id )
    WHERE
    ot_posts.post_type = 'iscritti'
    AND ( m1.meta_key = 'nominativo')
    AND ( m2.meta_key = 'indirizzo')
    GROUP BY ot_posts.ID
    ORDER BY ot_posts.post_title
    ASC;
    
    

    p.s. come faccio a mettere il topic risolto?