Visualizzazione risultati 1 fino 7 di 7

Discussione: [Mysql] Foreign key e database di AV

  1. #1
    Guest

    Predefinito [Mysql] Foreign key e database di AV

    Ciao, la domanda è un po' particolare nel senso che in parte so già la risposta, ovvero AV permette di avere solo e soltanto un database con motore MyIsam, mentre MySQL permette di usare le FOREIGN KEY solo con InnoDB.
    Ora il mio problema è che devo ricavare i dati di alcune news da due tabelle, una per le news e una per l'autore della stessa e senza foreign key mi trovo a dover fare molte query, diciamo che avendo una pagina con 20 news visualizzate dovrei fare 21 query, una per le news e 20 per ogni news per tirare fuori i dati dell'autore. Troppe!
    Alternative? A parte usare un database esterno?

  2. #2
    Guest

    Predefinito

    Mi sa che userò le JOIN!

  3. #3
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Beh sì, nel caso come il tuo è sufficiente una query sola con la join. Comunque InnoDB è attivabile dal pannello di controllo.


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  4. #4
    Guest

    Predefinito

    Citazione Originalmente inviato da saitfainder Visualizza messaggio
    Beh sì, nel caso come il tuo è sufficiente una query sola con la join. Comunque InnoDB è attivabile dal pannello di controllo.
    E be questo era ovvio anche se non sapevo fosse attivabile da pannello, non capisco perché questa differenza comunque mi adeguo se non riesco altrimenti.
    Perché non usare le join per non incasinare le query, con le foreign key i dati relazionati da un'altra tabella uscivano in automatico, comunque è anche vero che non sta funzionando dato che i dati mi vengono riportati tutti a NULL mentre invece ci sono ( ce li ho messi io )
    In sostanza ho fatta questa query:
    SELECT tabella1.*, tabella2.nome FROM tabella1 LEFT JOIN tabella2 ON tabella1.id=tabella2.id WHERE dato=0
    I dati relativi a tabella1 ci sono tutti, quello relativo a tabella2 è a NULL mentre invece esiste nel database
    Ultima modifica di gamerama : 03-11-2015 alle ore 15.52.11

  5. #5
    L'avatar di saitfainder
    saitfainder non è connesso Sëniör Stäff
    Data registrazione
    06-12-2002
    Residenza
    Torino
    Messaggi
    8,715

    Predefinito

    Se tabella2.nome è NULL vuol dire che in tabella2 non esiste l'id corrispondente di tabella1. Ricontrolla i dati.


    «È una mia peculiarità distorcere la verità e inventarne di nuove.»
    «I tuoi orientamenti hanno su di me un effetto prossimo allo zero.»


  6. #6
    Guest

    Predefinito

    Citazione Originalmente inviato da saitfainder Visualizza messaggio
    Se tabella2.nome è NULL vuol dire che in tabella2 non esiste l'id corrispondente di tabella1. Ricontrolla i dati.
    Ti ho detto che ci sono, è la query che riporta NULL i dati ci sono, come ho detto su prima ce li ho infilati io col phpmyadmin.
    La query l'ho anche provata con phpmyadmin e riporta null non ha senso.

  7. #7
    Guest

    Predefinito

    Trovato l'errore, banale ma reale, non è il campo nome ad essere vuoto, anzi non lo è nessuno, tutto perfetto, tranne che i campi id di persona e di news non corrispondono, per questo riportava sempre NULL.
    Ora rivedo il codice di assegnazione, c'è evidentemente un bachetto da correggere, ok.

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •