Проблемы с phpmyadmin SQL-код, выбирает между 2 таблицами слов и слов обучения - PullRequest
0 голосов
/ 16 апреля 2019

Итак, у меня есть 2 таблицы: слова и обученные слова

Я работаю над проектом, в котором вы можете выучить новый словарный запас (в детстве), и я хотел бы получить: все слова, в которыхбуква совпадает с последним словом, усвоенным пользователем.Я не знаю, понятно ли это, но это что-то вроде: я выучил слова

  1. "Бисквит"
  2. "Птица"
  3. "Синий"

Я хочу получить все слова, в которых начальная буква совпадает с синим, потому что это было последнее слово, усвоенное пользователем.

Код, который я написал, таков:1015 *

select * 
from words p 
where letter = (
    select letter 
    from words p 
    where exists (
        select max(idWord) 
        from wordslearned pa 
        where p.idWord = pa.idWord and pa.idUser = idUser 
    ) 
    order by idWord desc 
    limit 1 
)

Но с помощью этого кода он показывает мне слова, которые пользователь все еще не выучил, начиная снизу из-за "desc".

Может ли кто-нибудь мне помочь?Если вы что-то не поняли, пожалуйста, скажите, чтобы я мог разъяснить вам.

1 Ответ

0 голосов
/ 16 апреля 2019

EXISTS просто проверяет, находит ли подзапрос какие-либо строки, выбранное значение не используется.Так что MAX(idWord) ни для чего не используется.

Вы хотите получить письмо из последней строки, изученной пользователем, а именно:

SELECT letter
FROM wordsLearned pa
ORDER BY idWord DESC
WHERE pa.idUser = p.idUser
LIMIT 1

Весь запрос будеттогда будет:

SELECT *
FROM words p
WHERE letter = (
    SELECT letter
    FROM wordsLearned pa
    WHERE pa.idUser = p.idUser
    ORDER BY idWord DESC
    LIMIT 1
)

Это также можно записать как JOIN:

SELECT p.*
FROM words p
JOIN wordsLearned p1 ON p.letter = p1.letter AND p.idUser = p1.idUser
JOIN (
    SELECT idUser, MAX(idWord) AS maxId
    FROM wordsLearned
    GROUP BY idUser) p2 ON p1.idUser = p2.idUser and p1.idWord = p2.maxId
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...