Albo się starzeję, albo pytania, które muszę napisać, stają się coraz bardziej skomplikowane. Następująca kwerenda spowoduje, że cały tasks
zostanie powiązany z użytkownikiem.scalanie dwóch zapytań SELECT
"SELECT `date`
FROM `tasks`
WHERE `user_id`= 1;"
Tabela tasks
oznacza (id
, date
, user_id
, url_id
);
Teraz muszę się dostać, a także zapisy, które url_id
współpracownicy z użytkownikiem koryta
`urls` table (`id`, `user_id`)
Zapytanie samodzielnym będzie wyglądać następująco:
"SELECT `t1`.`data`
FROM `tasks` `t1`
JOIN `urls` `u1` ON `u1`.`id` = `t1`.`url_id`
WHERE `u1`.user_id` = 1;"
choć jest to możliwe do scalania te dwa zapytania do pojedynczego zapytania? Moja logika mówi, że tak powinno być, chociaż nie rozumiem, jak wykonać JOIN.
Czy chodziło Ci o 'data' lub' date' w twoim ostatnim zapytaniu? Ponadto, jeśli nie wybierasz żadnych danych z tabeli adresów URL, czy naprawdę musisz do niego dołączyć? (Odpowiedź może brzmieć "tak, aby upewnić się, że istnieje wpis URL dla tego identyfikatora użytkownika".) I dlaczego tak wiele tyknięć wstecz; jest tak źle jak MS SQL Server i nawiasy kwadratowe! –
Napisałem zapytanie po drodze, więc naturalnie zostawiłem kilka błędów. Masz jednak rację, musiała to być "date", a nie "data". Normalnie zignorowałbym uwagę na temat "back-ticks", chociaż masz dość wysoką reputację, więc jestem trochę ciekaw, dlaczego mówisz, że "jest tak źle, jak MS SQL Server i nawiasy kwadratowe"? Celem samych backticks jest zapewnienie, że serwer MySQL jest w stanie szybko zidentyfikować nazwy tabel i kolumn oraz aby uniknąć nieporozumień przy użyciu zastrzeżonych słów kluczowych, takich jak 'left' lub' right' w zestawach zagnieżdżonych. – Gajus
To samo zastrzeżenie dotyczy nawiasów kwadratowych przez użytkowników MS SQL Server. Wygląda to na brzydkiego i jest całkowicie niestandardowe. Żadne inne DBMS nie obsługuje tyknięć wstecz ani nawiasów kwadratowych dla tego, co standard SQL nazywa "identyfikatory rozdzielone", które norma mówi, są ujęte w podwójne cudzysłowy; pojedyncze cudzysłowy są zarezerwowane dla ciągów. Różne systemy DBMS mają różne reguły dotyczące miejsca, w którym można używać słów kluczowych. Ta, której używam, pozwala w większości miejscach na słowa kluczowe jako identyfikatory. Najlepiej unikać cytatów, unikając słów kluczowych jako identyfikatorów. –