2015-01-09 1 views
0

나는 포럼을 만들고 있는데이 테이블을 가지고 있습니다. 여기 봐 주시기 바랍니다 :사용자의 ID 테이블을 다른 테이블과 함께 표시하는 방법은 무엇입니까?

create table if not exists login_system(
user_id INT NOT NULL auto_increment, 
email VARCHAR(100) NOT NULL, 
password VARCHAR(100) NOT NULL, 
first_name VARCHAR(100) NOT NULL, 
last_name VARCHAR(100) NOT NULL, 
gender VARCHAR(50) NOT NULL, 
about_yourself VARCHAR(150) NOT NULL, 
my_website VARCHAR(100000) NOT NULL, 
PRIMARY KEY(user_id) 
); 

그리고이 표는 질문입니다 :

이 테이블은 사용자를위한 것입니다

create table if not exists thread_question(
question_id INT NOT NULL auto_increment, 
first_name VARCHAR(100) NOT NULL, 
last_name VARCHAR(100) NOT NULL, 
question_title VARCHAR(500) NOT NULL, 
question VARCHAR(100000) NOT NULL, 
question_dateTime VARCHAR(100) NOT NULL, 
PRIMARY KEY(question_id) 
); 

나는 그/그녀가 게시 경우 user's link을 보여주고 싶은 자신의/그녀의 질문. 호버 후 사람의 이름에 링크를 제공해야합니다. 다른 사람들이 자신의 프로필 정보를 볼 수 있도록

간단히 말해서 나는 당신이를 사용하여 포럼에 표시하는 몇 가지 질문을 가져올 수 :

<% 
try{ 
     Class.forName("com.mysql.jdbc.Driver"); 
     Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/forum", "root", "1234"); 
     Statement st=con.createStatement(); 
     ResultSet rs=st.executeQuery("select * from thread_question where question_id="+question_id); 
      while(rs.next()){ 

       String first_name=rs.getString("first_name"); 
       String last_name=rs.getString("last_name"); 
       String thread_title=rs.getString("question_title"); 
       String thread_question=rs.getString("question"); 
       String thread_dateTime=rs.getString("question_dateTime"); 

... 
... 
... 
%> 

이제 내 소원은 우리가 여기 함께 두 문장을 만들 수 없다는 것을 아주 잘 알고 question's table과 함께 login_system's table을 보여주는 것입니다. 그러니 도와주세요 .. user_idlogin_system 탁자에 올려 놓고 싶습니다. 링크를 클릭하면 쉽게 그/그녀의 프로필을 볼 수 있습니다. 저를 도와주세요? 그렇게하는 방법?

+4

관련 없음 : ** SQL 코드를 JSP 페이지에 넣지 마십시오. 그리고 JSP 페이지 내부에서도 연결을 생성하지 마십시오.서블릿 컨테이너에서 적절한 연결 풀을 사용하고 서블릿에 데이터 액세스 코드를 옮깁니다 –

답변

1

먼저 horse_with_no_name의 제안에 따라 보안상의 이유로 JSP 코드에 SQL 코드를 넣지 마십시오.

또한 질문을 읽기가 어려웠으므로 문법/맞춤법을 수정하십시오.

또 다른 것은 당신이 당신이 좋아하면 하나 이상의 SQL 문을 만들 수 있다는 것을 아주 잘 알고 http://en.wikipedia.org/wiki/Database_normalization

데이터베이스 구조를 정상화에 대해 읽어 가고 싶은거야, 그것은 또 다른 연결,하지만에서 이 경우 당신은

그것은이 같은 것입니다 원하는 SQL처럼 보이는이

create table if not exists thread_question(

    question_id INT NOT NULL auto_increment, 
    user_id id INT NOT NULL, 
    first_name VARCHAR(100) NOT NULL, 
    last_name VARCHAR(100) NOT NULL, 
    question_title VARCHAR(500) NOT NULL, 
    question VARCHAR(100000) NOT NULL, 
    question_dateTime VARCHAR(100) NOT NULL, 
    PRIMARY KEY(question_id) 
    ); 

에 thread_question 테이블을 변경

(대부분의 경우 등)에 필요하지 않겠습니까?

SELECT 
LS.FIRST_NAME, 
LS.LAST_NAME, 
TQ.question_title, 
TQ.question, 
TQ.question_dateTime 
FROM 
login_system as LS 
JOIN thread_question as TQ ON 
LS.user_id = TQ.user_id 
+0

제 친구도'user_id'를 질문 테이블에 넣으라고했습니다 ... 감사합니다. 당신의 대답은 감사합니다. :) –

+0

위의 오류가 귀하의 쿼리에 ...하지만 감사합니다 .. 나는 그 아이디어를 질문 테이블에'user_id'를 넣는 것을 좋아합니다. :) –

+0

빨리 살펴보고 케이스 오류를 보았습니다. 그렇지만 좋은 행운을 빕니다! – visch

1

다양한 접근 방식이 있습니다. 첫째, 주석으로, 당신은 JSP로 직접 연결 코드를 넣으면 안됩니다. 둘째, SQL 삽입의 위험 때문에 문자열을 연결하여 명령문을 작성하면 안됩니다. 그 의미를 이해하고 PreparedStatement을 대신 사용하십시오.

thread_question 테이블에 이름과 성을 갖기보다는 마침내 질문에 대답하려면 login_system 테이블에 ID에 대한 외래 키가 있어야하며 SQL 문에서 조인을 사용해야합니다. 나는 여기에 축 어적 인 해결책을 붙여 넣으면 많은 도움이되지 않을 것이라고 생각합니다.

1

따르 의뭉 솔루션 및 테이블에 참여하지 않으려면 다음 1. 화재 쿼리 즉 또 하나 개의 솔루션은 thread_question 및 소요 데이터는 거기에있다. 2. 페이지를 준비하고 userLink를 제공 할 때 javascript에 hover 이벤트를 첨부해야합니다.이 이벤트는 사용자 ID를 입력으로 사용하고 ajax 호출을 호출하여 사용자 관련 데이터를 가져 와서이 데이터를 사용합니다.

관련 문제