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

    [Mysql] Problemi con INNER JOIN

    è circa un'ora che combatto con una inner join ma nn riesco a venirne a capo:
    codice:
    mysql> desc movimenti;
    +--------------+--------------+------+-----+---------+----------------+
    | Field        | Type         | Null | Key | Default | Extra          |
    +--------------+--------------+------+-----+---------+----------------+
    | id_movimento | int(11)      | NO   | PRI | NULL    | auto_increment |
    | entrata      | decimal(5,3) | YES  |     | 0.000   |                |
    | uscita       | decimal(5,3) | YES  |     | 0.000   |                |
    | conto_FK     | int(11)      | NO   | MUL | NULL    |                |
    | causali_FK   | int(11)      | NO   | MUL | NULL    |                |
    | data         | date         | NO   | MUL | NULL    |                |
    +--------------+--------------+------+-----+---------+----------------+
    6 rows in set (0.00 sec)
    
    mysql> desc causali;
    +--------------+-------------+------+-----+---------+----------------+
    | Field        | Type        | Null | Key | Default | Extra          |
    +--------------+-------------+------+-----+---------+----------------+
    | causale_id   | int(11)     | NO   | PRI | NULL    | auto_increment |
    | causale_nome | varchar(45) | NO   | UNI | NULL    |                |
    +--------------+-------------+------+-----+---------+----------------+
    2 rows in set (0.01 sec)
    
    mysql> desc conti;
    +-------------+-------------+------+-----+---------+----------------+
    | Field       | Type        | Null | Key | Default | Extra          |
    +-------------+-------------+------+-----+---------+----------------+
    | conto_id    | int(11)     | NO   | PRI | NULL    | auto_increment |
    | conto_banca | varchar(45) | NO   | UNI | NULL    |                |
    +-------------+-------------+------+-----+---------+----------------+
    2 rows in set (0.00 sec)
    questa è laSELECT con l'errore:
    codice:
    mysql> SELECT * FROM movimenti, causali, conti INNER JOIN causali ON movimenti.causali_FK = causali.causale_id INNER JOIN movimenti ON movimenti.conto_FK = conti.conto_id;
    ERROR 1066 (42000): Not unique table/alias: 'causali'
    che ne dite??

  2. #2
    hai fatto un mischione

    se usi le join devi rispettare questa sintassi

    select colonne from tab1 join tab2 on tab1.colonna=tab2.colonna join tab3 on tab3.colonna=tab2.colonna

    e non

    select colonne from tab1,tab2,tab3 join tab2 on tab1.colonna=tab2.colonna join tab3 on tab3.colonna=tab2.colonna

    ok?

  3. #3
    la query che ti ho dato è stato l'ultimo tentativo.
    io infatti ricordavo la prima sintassi e me la sono andata a riguardare.
    ma anche facendo così mi dava quell'errore.
    per questo ho provato nel secondo modo.
    forse c'è qualche nome che da fastidio.

  4. #4
    ho spezzato la tabella movimenti in due tabelle, una per le entrate e l'altra per le uscite.
    io vorrei selezionare tutte le entrate e tutte le uscite usando le inner join.
    ho provato così:
    codice:
    SELECT *
    FROM entrate, uscite
    INNER JOIN causali ON entrate.entrata_causale_id = causali.causale_id
    INNER JOIN conti ON entrate.entrata_conto_id = conti.conto_id
    INNER JOIN causali ON uscite.uscita_causale_id = causali.causale_id
    INNER JOIN conti ON uscite.uscita_conto_id = conti.conto_id
    
    #1066 - Not unique table/alias: 'causali'
    solo con le entrate o uscite funziona.
    come posso eseguire questa query??

  5. #5
    aridajela co sto select tabella,tabella

    devi indicare UNA tabella alla volta

  6. #6
    si ho capito ma se devo etrapolare dati contemporaneamente da due tabelle che tra loro nn sono collegate ed esegure una JOIN su altre tabelle?
    è questo che nn riesco a capire.
    entrate e uscite sono collegate a due stesse tabelle:
    codice:
    mysql> desc entrate;
    +--------------------+--------------+------+-----+---------+----------------+
    | Field              | Type         | Null | Key | Default | Extra          |
    +--------------------+--------------+------+-----+---------+----------------+
    | entrata_id         | int(11)      | NO   | PRI | NULL    | auto_increment |
    | entrata_valore     | decimal(8,2) | NO   | MUL | NULL    |                |
    | entrata_causale_id | int(11)      | NO   | MUL | NULL    |                |
    | entrata_conto_id   | int(11)      | NO   | MUL | NULL    |                |
    | data               | date         | NO   | MUL | NULL    |                |
    +--------------------+--------------+------+-----+---------+----------------+
    
    mysql> desc uscite;
    +-------------------+--------------+------+-----+---------+----------------+
    | Field             | Type         | Null | Key | Default | Extra          |
    +-------------------+--------------+------+-----+---------+----------------+
    | uscita_id         | int(11)      | NO   | PRI | NULL    | auto_increment |
    | uscita_valore     | decimal(8,2) | NO   | MUL | NULL    |                |
    | uscita_causale_id | int(11)      | NO   | MUL | NULL    |                |
    | uscita_conto_id   | int(11)      | NO   | MUL | NULL    |                |
    | uscita_data       | date         | NO   | MUL | NULL    |                |
    +-------------------+--------------+------+-----+---------+----------------+

  7. #7
    ok ci sono arrivato: UNION:
    codice:
    SELECT *
    FROM entrate
    INNER JOIN causali ON entrate.entrata_causale_id = causali.causale_id
    INNER JOIN conti ON entrate.entrata_conto_id = conti.conto_id
    UNION
    SELECT *
    FROM uscite
    INNER JOIN causali ON uscite.uscita_causale_id = causali.causale_id
    INNER JOIN conti ON uscite.uscita_conto_id = conti.conto_id
    nn so se è l'unico modo.

  8. #8

  9. #9

  10. #10
    però avrei una curiosita.
    la query è quella sopra.
    il risultato è questo:
    codice:
    +------------+----------------+--------------------+------------------+--------------+-------------------+------------+------------------+----------+------------+
    | entrata_id | entrata_valore | entrata_causale_id | entrata_conto_id | entrata_data | entrata_note      | causale_id | causale_nome     | conto_id | conto_nome |
    +------------+----------------+--------------------+------------------+--------------+-------------------+------------+------------------+----------+------------+
    |          1 |         5.00 |                 14 |                2 | 2011-10-01   |                   |         14 | prova |        2 | prova       |
    |          2 |        5.00  |                 14 |                1 | 2011-10-01   |                   |         14 | prova |        1 | prova  |
    |          1 |           5.00 |                 11 |                2 | 2011-10-01   |                   |         11 | prova    |        2 | prova       |
    |          3 |          5.00  |                  1 |                2 | 2011-10-01   |                   |          1 | prova              |        2 | prova       |
    |          4 |          5.00  |                  1 |                2 | 2011-10-01   |                   |          1 | prova              |        2 | prova       |
    |          2 |         5.00  |                 15 |                1 | 2011-10-01   |  |         15 | prova          |        1 | prova  |
    +------------+----------------+--------------------+------------------+--------------+-------------------+------------+------------------+----------+------------+
    lasciando perdere i valori....
    diciamo che i movimenti ci stanno tutti.
    però nell'intestazione le uscite nn vengono menzionate, anche se ci stanno i valori (ad esempio l'ultimo record).
    perchè?

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.