Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16

Discussione: Inner join su tabelle

  1. #1

    Inner join su tabelle

    ciao a tutti devo estrarre da due tabelle dei dati e ho creato questa query :

    Codice PHP:
    $query "SELECT phpbb_pa_files.file_name, phpbb_pa_files.file_id, phpbb_pa_cat.cat_parent FROM phpbb_pa_files INNER JOIN phpbb_pa_cat ON phpbb_pa_cat.file_id = phpbb_pa_files.file_id WHERE file_catid <='35' AND file_catid >='16' AND phpbb_pa_cat.cat_parent = '6' ORDER BY file_time DESC LIMIT 5"
    praticamente devo estrarre tutte le voci da una tabella che sia inderiori a 35 e maggiori di 16 secondo il campo file_catid....in piu dovrei far si che prenda solo quelli con valore '6' nella tabella phpbb_pa_cat e precisamente nel campo cat_parent ....ecco ora tutto cio nn funge e l'errore è proprio su quella riga !!!! ( che caso!) qualche aiutino? grazie mille

  2. #2

    Re: Inner join su tabelle

    innnanzitutto che errore ti restituisce?
    In secondo luogo.. usi le api di phpBB per fare questa query? ti conviene ma sembra di no perchè usi direttamente i nomi delle tabelle... ^__^



    SELECT files.file_name, files.file_id, cat.cat_parent
    FROM phpbb_pa_files AS files INNER JOIN phpbb_pa_cat AS cat
    ON cat.file_id = files.file_id
    WHERE cat.file_id <='35' AND cat.file_id >='16' AND cat.cat_parent = '6'
    ORDER BY files.file_time DESC LIMIT 5


    ad occhio questa dovrebbe andare...

    provala da phpmyadmin magari...


  3. #3
    ciao guidoz ho visto che sul tuo sito usi phpbb anche tu ..cmq in che modo dici di usare le api?!

  4. #4
    na non va nemmeno quella query lìho provata ora.....

  5. #5
    per API di phpBB intendo le funzioni che usa phpBB stesso... esempio....

    define('IN_PHPBB', true);
    $phpbb_root_path = '../';
    include($phpbb_root_path . 'extension.inc');
    nclude($phpbb_root_path . 'common.'.$phpEx);

    $sql = "blablabla";

    $db->sql_query($sql);


    c'è tutto il layer di astrazioene del DB... che sta incluso in common.php che tu devi includere come da esmepio

  6. #6
    [supersaibal]Originariamente inviato da pischedda
    na non va nemmeno quella query lìho provata ora..... [/supersaibal]
    fai

    echo mysql_error();

    dopo la query...

    hai provato a farla da phpmyadmin?


  7. #7
    Unknown column 'cat.file_id' in 'where clause' ecco l'errore che dà scusa una domanda ma con le API cosa ho in più? devo sempre crearmi io la query

  8. #8

    Re: Re: Inner join su tabelle

    SELECT files.file_name, files.file_id, cat.cat_parent
    FROM phpbb_pa_files AS files INNER JOIN phpbb_pa_cat AS cat
    ON cat.file_id = files.file_id
    WHERE files.file_id <='35' AND files.file_id >='16' AND cat.cat_parent = '6'
    ORDER BY files.file_time DESC LIMIT 5


    così???

    con le "API" di phpBB semlicemente utilizzi tutto in modo più astratto ed elastico, come fa iil forum stesso....

    ad esempio per i nomi delle tabelle dovresti utilizzare le costanti definite nel file constants... così se su un forum il prefisso è "phpbb_" e su un alytro è "forum_"... tutto funziona lo stesso....

    è semplicemente questo.. se lavori "per te" è lo stesso.. ma se vuoi fare uno script universalmente valido devi per forza di cosa usare l'interfaccia che ti fornisce il forum stesso


  9. #9
    Unknown column 'cat.file_id' in 'on clause' niente....grazie per la spiegazione sulle API...per ora utilizzo questo perchè sto lavorando "per me " come hai detto ehehe

  10. #10
    allora.. calma...

    facciamo sta query con calma...

    hai due tabelle:
    phpbb_pa_files e phpbb_pa_cat

    giusto?


    la inner la fai così:

    SELECT ... cosa? che campi devi selezionare da ciascuna delle due tabelle? fammi 2 elenchi.. uno per tabella...

    FROM phpbb_pa_files AS files INNER JOIN phpbb_pa_cat AS cat
    qui sopra abbiamo detto che dobbiamo fare una JOIN tra due tabelle, che per comodità chiamiamo "files" e "cat" [...AS files... AS cat...]

    ON cat.file_id = files.file_id
    qui devi dire con che criterio i record di una tabella devono essere in relazione con quelli dell'altra... cioè.. che campo della prima dev'essere uguale a quello della seconda.... dimmelo tu... perchè dall'errore che ti da pare che la tabella cat non abbia il campo "file_id"

    WHERE files.file_id <='35' AND files.file_id >='16' AND cat.cat_parent = '6'
    ORDER BY files.file_time DESC LIMIT 5
    qua c'è poco da spiegare visto quanto detto su



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 © 2024 vBulletin Solutions, Inc. All rights reserved.