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

    [sql] Problema con JOIN

    Salve gente

    Il mio problema è questo (niente i JOIN proprio non mi entrano in testa!).

    Ho una tabella "links" formata da

    id - link - testo

    ed una tabella "ass_links" (dove ci sono gli id degli utenti associati ai link) formata da

    id - id_link - id_user.

    Ora, dato che sto sistemando un pò di cose sul db avrei bisogno di selezionare da "links" tutti quegli id che non sono associati in "ass_links".
    Ho fatto questa query
    codice:
    "SELECT * FROM ass_links RIGHT JOIN links ON ass_links.id_link != links.id ORDER BY links.id"
    ma come output mi restituisce tutti gli id di "links" ripetuti 4 volte, compresi quelli che sono presenti in "ass_links".
    Dov'è l'errore?

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2003
    Messaggi
    534
    Prova:

    SELECT *
    FROM links a
    LEFT JOIN ass_links b
    ON a.id = b.id_link
    where a.id IS NULL
    ORDER BY a.id


  3. #3
    Utente di HTML.it L'avatar di VaLvOnAuTa
    Registrato dal
    Jun 2002
    Messaggi
    2,003
    Così non restituisce nulla.

  4. #4
    Utente di HTML.it L'avatar di VaLvOnAuTa
    Registrato dal
    Jun 2002
    Messaggi
    2,003
    Uhm dato che io uso questo codice:
    Codice PHP:
    $query mysql_query("SELECT * FROM links LEFT JOIN ass_links ON links.id != ass_links.id_link") or die (mysql_error());
    while (
    $row mysql_fetch_object($query)) {
      echo 
    $row->id."
    "
    ;

    non è che il problema è dovuto all'ambiguità del campo id (che ha lo stesso nome in entrambe le tabelle)? Però il LEFT join dovrebbe eliminare sto problema

  5. #5
    Utente di HTML.it L'avatar di Emyl
    Registrato dal
    Jul 2004
    Messaggi
    250
    Puoi provare cosi?

    SELECT links.id AS id FROM links LEFT JOIN ass_links ON links.id != ass_links.id_link

    Originariamente inviato da VaLvOnAuTa
    Uhm dato che io uso questo codice:
    Codice PHP:
    $query mysql_query("SELECT * FROM links LEFT JOIN ass_links ON links.id != ass_links.id_link") or die (mysql_error());
    while (
    $row mysql_fetch_object($query)) {
      echo 
    $row->id."
    "
    ;

    non è che il problema è dovuto all'ambiguità del campo id (che ha lo stesso nome in entrambe le tabelle)? Però il LEFT join dovrebbe eliminare sto problema

  6. #6
    Utente di HTML.it L'avatar di VaLvOnAuTa
    Registrato dal
    Jun 2002
    Messaggi
    2,003
    Niente neanche così.. cmq avevo risolto in altro modo, eliminando gli id di troppo. Ora però ho un altro problema.

    Devo fare un join su 3 tabelle:
    in pratica devo fare la lista di tutti i link ordinati per nome utente.
    In pratica devo fare un join tra la lista utenti e la tabella che relaziona gli utenti e i link, ordinare per utente ed vere la possibilità di leggere i dati relativi al link che abbia per id quello presente in ass_links.
    E' possibile farlo in una sola query o devo fare una query per ogni ciclo?
    In pratica uso questo codice
    Codice PHP:
    $query mysql_query("SELECT * FROM account RIGHT JOIN ass_links ON account.id=ass_links.id_utente ORDER BY account.nome LIMIT $start,20");
    while (
    $row mysql_fetch_object($query)) {
      
    $link mysql_fetch_object(mysql_query("SELECT * FROM links WHERE id=$row->id_link")); 
    però devo fare 21 query ogni pagina. Si può evitare o è necessario?

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.