cercando di fornire il valore corretto dalla query SQL confrontando una tabella diversa

Sono molto nuovo con SQL e ho bisogno di assistenza su come posso realizzare questa attività utilizzando la query corretta.

Ho 2 tavoli che ho bisogno di usare. La tabella "TB1" ha:

id Name 1 bob 2 blow 3 joe 

la tabella "TB2" ha:

 compid property 1 bob 2 blow 

Sto cercando di get quale compid manca in "TB2" e lo inserisco da "TB1"

la domanda che sto facendo è:

 SELECT id, name from TB1, TB2 where id <> compid 

quello che ottengo è 2 uscite di Id 1, e 2 e 3 uscite da id 3. usando php:

 for($i=0;$i <= mysql_num_rows($comp)-1; $i++) { echo mysql_result($comp, $i, 0)."<br>"; } 

e mi aspettavo l'output 3, ma invece ho ottenuto questo:

 1 1 2 2 3 3 3 

Capisco il suo confronto di tutte le righe all'interno del tavolo ma c'è un modo per get quello che sto cercando?

Grazie per il tuo tempo.

Stai eseguendo un INIZIO cartesiano implicito che risulta in each row contro each altra row. È necessario specificare quale attributo JOIN le due tabelle.

Utilizzo della syntax implicita (non consigliato):

 SELECT id, name FROM TB1, TB2 WHERE id <> compid AND TB1.Name = TB2.property <-- Column join 

Utilizzando la syntax esplicita:

 SELECT id, name FROM TB1 JOIN TB2 ON TB2.property = TB1.Name <-- Column join WHERE id <> compid 

Per raggiungere il tuo objective avresti bisogno di qualcosa sulla falsarow di:

 SELECT TB1.id, TB1.name FROM TB1 LEFT JOIN TB2 ON TB2.property = TB1.Name WHERE TB2.compid IS NULL 

Guardalo in azione

È consigliabile fare sempre l'alias delle colonne selezionate per evitare l'ambiguità.

Per selezionarlo puoi fare:

 SELECT * FROM TB1 WHERE id NOT IN ( SELECT compid FROM TB2 );