Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di VaLvOnAuTa
    Registrato dal
    Jun 2002
    Messaggi
    2,003

    [sql] query complessa su 3 tabelle

    Salve gente
    ALlora il problemino della giornata è questo:
    ho 3 tabelle:
    categorie, aziende e contatti.
    Ogni azienda viene associata ad una categoria (tramite un'altra tabella ass_caregorie) ed ogni contatto ad un'azienda (è un campo interno alla tabella contatti).

    Ho bisogno di creare una query che selezioni solo i contatti che siano associati alle azienda che facciano parte di una determinata categoria.
    Ho provato con una query di questo tipo:
    codice:
    "SELECT * FROM contatti, aziende WHERE contatti.azienda=aziende.id AND aziende.id IN 
               (SELECT id_azienda FROM ass_categorie WHERE id_categoria=$categoria)";
    ma mi dà quest'errore:
    You have an error in your SQL syntax near 'SELECT id_azienda FROM ass_categorie WHERE id_categoria=5)' at line 4

    Ora dato che la query dal punto di vista sintattico mi pare corretta, non è che mysql non supporta le subquery?

  2. #2
    si, ancora mysql non lo supporta nellva vesione 4.x

  3. #3
    Esatto.... mi pare devi avere la 4.1


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  4. #4
    Credo che puoi fare lo stesso con una query. Prova...
    codice:
    SELECT *
    FROM contatti cont, aziende az, assoc_categorie ass
    WHERE cont.azienda=az.id
    AND az.id = ass.azienda_id    <----- azienda_id mettici il nome giusto
    AND ass.id_categoria = '$categoria'

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Utente di HTML.it L'avatar di VaLvOnAuTa
    Registrato dal
    Jun 2002
    Messaggi
    2,003
    Grazie ho risolto con 2 join concatenate
    codice:
    SELECT * FROM ass_categorie 
     RIGHT JOIN aziende ON aziende.id=ass_categorie.id_azienda 
     RIGHT JOIN contatti ON contatti.azienda=ass_categorie.id_azienda 
     WHERE ass_categorie.id_categoria=$categoria 
    ORDER BY aziende.nome, contatti.cognome, contatti.nome
    Solo che per caricare la pagina (e quindi in pratica eseguire la query, perchè a stampare è velocissimo) ci mette poco più di 6 secondi
    Il tutto per avere i risultati ordinati per nome azienda

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.