通常の結合ができるように、投票テーブルの構造を変更する必要があります。純粋な userID 列を追加するか、少なくとも他の 2 つの列を連結しないようにすることを強くお勧めします。ID に基づいて、次のようなことを簡単に行うことができます。
select
a.userID,
a.firstName,
b.votes
from
entries a
join voting b
on a.userID=b.userID
order by
b.votes desc
もう 1 つのオプションは、(1 対 1 の関係の場合) 単純にデータを 1 つのテーブルにマージすることを検討することです。これにより、さらに簡単になります。
現時点では、これは本当にXY問題です。結合することを意図していない 2 つのテーブルを結合する方法を探しています。(恐ろしく、恐ろしい、恐ろしい) 方法はありますが、最良の解決策は、少し余分な作業を行い、データベースを変更することだと思います (データを失わないように、私たちは確かにそれを支援できます)。あなたが今やりたいことを(簡単に)できるようになり、将来やりたいと思う他のすべてのこと(今はわからないこと)もずっと簡単になります。
編集:これは、トリガーを使用して新しい行を挿入する絶好の機会のようです。MySQL トリガーは、特定の定義済みアクションが発生したときにデータベースが実行するアクションです。この場合、メイン テーブルに行を挿入するときに、テーブルに新しい行を挿入する必要があります。美しさは、元のテーブルのデータへの参照を使用してそれを実行できることです。
CREATE TRIGGER Entries_Trigger AFTER insert ON Entries
FOR EACH ROW BEGIN
insert into Voting values(new.UserID,0,0);
END;
これは次のように機能します - 行が Entries テーブルに挿入されると、データベースは行を挿入し (auto_increment ID などを作成します)、すぐにこのトリガーを呼び出し、新しく作成された UserID を使用して挿入します2 番目のテーブル (投票と nvotes のいくつかのゼロと共に)。