我有一个JavaScript程序,如果你输入'let's talk'或者类似的东西,它会转到它的问题函数,它从问题表中询问用户的问题。它只询问没有问过的问题。
我已经设置了3个表。
(questions) (people) (questionasked)
QID Question PID Person QID PID Asked Answer
1 What is life? 1 Lindsay 1 1 N ''.
2 Do you know Kate J? 2 Kate 2 1 Y 'Yes, Kate is cool'.
对于有问题的表,存在QID和PID的组合主键,因此不会询问相同的问题两次。
有什么好方法可以提出问题。问题表可能有20多个问题。 给出查询的php文件的变量只是名称:name(用户名)。 例如
$query1 = "SELECT q.Question
FROM questions q inner join questionsasked qa
ON q.QID = qa.QID
WHERE qa.Asked='N'";
我可以在这里添加另一个AND子句来检查
questionsasked inner join people on PID = people.PID AND people.Person = $name ?
上面的查询没有返回任何内容..仍然需要更多的SQL练习..我希望它返回结果中的第一个问题。
好的,我得到的答案主要是对vidyadhar的回答,并且还合并了来自JW的'OR qa.Asked IS NULL',这是一个好点,因为我可能没有填写'questionsasked'表,除非问题实际被问到。最好只有一个问题表,然后在问题得到解答时填写问题表。
我使用的答案是:
$query1 = "SELECT q.Question
FROM questions q
INNER JOIN questionsasked qa
ON q.QID = qa.QID
INNER JOIN peopleiknow p
ON qa.PID = p.PID
WHERE qa.Asked='N' OR qa.Asked IS NULL
AND p.Person = '$name'";
欢迎进一步调整。
实际上我仍然遇到了这个问题,所以修改了表格,并在这个问题中显示了php代码:SQL query in PHP file in need of a fix
答案 0 :(得分:1)
我认为这会有用
选择 q.Question 从问题q内连接问题qa ON q.QID = qa.qid 在哪里qa.asked ='N'
答案 1 :(得分:0)
SELECT a.PID, f.Person,
d.question
FROM
(
SELECT a.PID, b.QID
FROM people a, questions b
) c
INNER JOIN questions d
ON c.QID = d.QID
INNER JOIN people f
ON c.PID = f.PID
LEFT JOIN questionasked e
ON c.QID = e.QID AND
c.PID = e.PID
WHERE e.Asked = 'N' OR e.Asked IS NULL
答案 2 :(得分:0)
在这种情况下,您可以使用INNER JOIN。请检查
SELECT Q.Question
FROM questions Q INNER JOIN questionasked A ON Q.QID=A.QID
INNER JOIN people P ON A.PID=P.PID
WHERE A.QID= 'Question ID' AND
A.PID='Person ID' AND
A.Asked='Y'
答案 3 :(得分:0)
我认为如果你看看你的PHP问题或多或少有相同主题,就应该解决这个问题。
问候
马丁