Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    estrarre da una tebella in base ad un'altra

    Volendo estrarre dei dati da una tabella, in relazione a dati di una seconda tabella la queri giuta è?
    Ad esempio nella tabella sez, ho i record [id] e [val]
    nella tabella cont ho i record [id],[val],[sezid]

    volendo estrarre tutti i dati di cont ove cont.val=1 e sez.val=1
    io penso... ma non va:

    SELECT *.c,*.s FROM cont AS c, sez as s WHERE c.val=1 AND sez.val=1;


    sbaglio che cosa?

    grazie

  2. #2
    non ho ben capito la query
    prova cosi:

    SELECT * FROM sez,c WHERE c.val=1 AND sez.val=1;

  3. #3

    Re: estrarre da una tebella in base ad un'altra

    Originariamente inviato da Kreatore
    Volendo estrarre dei dati da una tabella, in relazione a dati di una seconda tabella la queri giuta è?
    Ad esempio nella tabella sez, ho i record [id] e [val]
    nella tabella cont ho i record [id],[val],[sezid]

    volendo estrarre tutti i dati di cont ove cont.val=1 e sez.val=1
    io penso... ma non va:

    SELECT *.c,*.s FROM cont AS c, sez as s WHERE c.val=1 AND sez.val=1;


    sbaglio che cosa?

    grazie
    innanzitutto il nome della tabella deve stare prima del campo e non viceversa, quindi c.* e non *.c
    poi, da quel che ho capito sezid della tabella record è chiave esterna riferita all'id della tabella sez, giusto?
    e tu vuoi estrarre i record legati da questi 2 campi?
    prova così:

    codice:
    select c.*, s.* from sez s inner join  cont c on s.id=c.sez_id
    where c.val=1 and s.val=1

    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
    ostrega funziona!!!
    riesci a spiegarmela, che non riesco a 'leggerla'

  5. #5
    Originariamente inviato da Kreatore
    ostrega funziona!!!
    riesci a spiegarmela, che non riesco a 'leggerla'
    vediamo se ci riesco...non sono mai stato bravo a spiegare


    codice:
    select c.*, s.* from sez s inner join cont c on s.id=c.sez_id
    where c.val=1 and s.val=1
    praticamente significa prendi tutti i record dalle tabelle cont e sez (chiamate con gli alias c e s per comodità) legate dalla chiave esterna sez_id che sarebbe quel from sez s inner join cont c on s.id=c.sez_id il join praticamente fa una "fusione" delle tue tabelle (per intenderci tipo una moltiplicazione, un AND logico) e con la condizione specificata dall'on tu gli dici di prendere SOLO i record che abbiano una relazione tra di loro.
    era la stessa cosa fare (almeno penso):

    codice:
    select c.*, s.* from sez s, cont c
    where c.val=1 and s.val=1 and s.id=c.sez_id
    quindi fare direttamente l'AND logico ed aggiungere la condizione dell'on nell'where. Infatti se provi a togliere l'ultima condizione and s.id=c.sez_id ti troverai molti più record perché prende anche quelli non legati tra loro.


    so di aver spiegato da schifo, ma dopo un venerdì sera è plausibile
    ho dormito 4 ore e ora sono qui al lavoro...lol


    comunque per maggiori info sulle join dai un'occhiata qui: http://dev.mysql.com/doc/refman/4.1/en/join.html







    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

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.