Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    [mysql]problema con JOIN in query

    ho due tabella praticamente identiche, vi posto la struttura di entrambe:

    #
    # Struttura della tabella `sent_cards`
    #

    CREATE TABLE sent_cards (
    id int(10) unsigned NOT NULL auto_increment,
    cliente varchar(255) NOT NULL default '',
    e_mail varchar(100) NOT NULL default '',
    destinatario varchar(255) NOT NULL default '',
    messaggio text NOT NULL,
    img varchar(255) NOT NULL default '',
    data date NOT NULL default '0000-00-00',
    PRIMARY KEY (id)
    ) TYPE=MyISAM;
    # --------------------------------------------------------

    #
    # Struttura della tabella `sent_free_cards`
    #

    CREATE TABLE sent_free_cards (
    id int(11) NOT NULL auto_increment,
    e_mail varchar(100) NOT NULL default '',
    destinatario varchar(255) NOT NULL default '',
    messaggio text NOT NULL,
    img varchar(100) NOT NULL default '',
    data date NOT NULL default '0000-00-00',
    PRIMARY KEY (id)
    ) TYPE=MyISAM;
    io devo fare una query che riassuma praticamente tutte le immagini spedite e le raggruppi in modo da vedere quali sono le più "scelte". Ho fatto una query così, ma mi becca solo i record della seconda che sono presenti anche nella prima:

    codice:
    SELECT count(*) AS `totale`,
    `sent_free_cards`.`img` AS `img_free`, `sent_cards`.`img` AS `img_pay`
    FROM `sent_cards` LEFT JOIN `sent_free_cards` 
    ON `sent_cards`.`img` = `sent_free_cards`.`img` 
    GROUP BY `sent_cards`.`img`, `sent_free_cards`.`img`
    ORDER BY `totale` DESC
    il risultato è quello che vi mostro in figura:


    ecco, praticamente i record che non mi piglia sono solo 2, presenti nella tabella sent_free_cards e non nell'altra...ho provato a smanettare un pò con i vari tipi di JOIN, ma non riesco a risolvere il problema.

    qualcuno mi sa dare una mano?grazie mille!
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  2. #2
    ora che presto un attimo più di attenzione...la cosa sbagliata è il conteggio...nella prima il totale dovrebbe essere 3, mentre nella penultima dovrebbe essere 2. quindi il fatto che smanettassi con i JOIN non serviva proprio a niente, c'è un altro errore, ma non riesco a trovarlo; se faccio due query separate la cosa è facilmente risolvibile, ma con una query?
    come mai sballa il totale?
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  3. #3
    forse non funziona perché il count non fa nessuna somma, conta e basta
    ma se io avessi bisogno di avere la somma? con SUM ho provato e non risolvo comunque niente, anzi, mi dà errori nella query

    idee?suggerimenti?aiutini ini ini?qualsiasi cosa è gradita.
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  4. #4
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Devi usare UNION, non JOIN

  5. #5
    Originariamente inviato da luca200
    Devi usare UNION, non JOIN
    UNION unisce i risultati di due query, quindi alla fin fine è come farne due distinte racchiuse in una sola...o sbaglio?

    altra cosa: le UNION non le posso usare perché ho una versione di mysql piuttsto vecchiotta [specifico che l'upgrade non dipende da me, quindi oltre che sollecitare non posso fare altro]

    grazie lo stesso!
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  6. #6
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Originariamente inviato da 13manuel84
    UNION unisce i risultati di due query, quindi alla fin fine è come farne due distinte racchiuse in una sola...o sbaglio?
    No, non sbagli.
    Ma le query SONO due, visto che hai i dati in due tabelle e non sono correlati, ma si tratta di fatto dello stesso tipo di dati.
    Io al tuo posto avrei usato una tabella unica, lasciando a NULL il campo cliente per le cards di tipo free.

  7. #7
    ho provato a fare una sola query che prendesse i due risultati separati, ma mi conta un record in più e non capisco il perché; la query che uso è questa:

    SELECT count(`sent_cards`.`img`) AS `totale_pay`,
    count(`sent_free_cards`.`img`) AS `totale_free`,
    `sent_free_cards`.`img` AS `img_free`, `sent_cards`.`img` AS `img_pay`
    FROM `sent_cards` LEFT JOIN `sent_free_cards`
    ON `sent_cards`.`img` = `sent_free_cards`.`img`
    GROUP BY `sent_cards`.`img`, `sent_free_cards`.`img`
    ORDER BY `totale_pay` DESC
    e la struttura che ottengo è questa:



    e il record in più che mi segna è alla seconda riga dalla parte totale_free, come mai? sbaglio qualcosa? beh, se il risultato è sbagliato penso sì di sbagliare qualcosa, ma non so dove

    me la date una mano? grazie mille!
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  8. #8
    c'è una cosa che non riesco a capire. Sembra che quando l'immagine ci sia in entrambe le tabelle mi conti solo quelle presenti nella tabella sent_cards e mi copi quel risultato anche per l'altra tabella.

    non riesco a venirne fuori...
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  9. #9
    up
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  10. #10
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Originariamente inviato da luca200
    Devi usare UNION, non JOIN
    Cosa c'era di poco chiaro in questa frase?

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.