Hallo Community,
ich stehe vor einem (für mich als SQL-Amateur) eher komplexeren Problem. Ich versuche mit folgender Abfrage eine Datenbank nach regionalen Einträge zu durchsuchen, wobei die verschiedenen Suchkriterien verschiedene Gewichtung in die Reihenfolge der Listung haben. - typisches Scoring-Prinzip.
Es wird mir jedoch folgende Fehlermeldung zurückgegeben: "Unbekanntes Tabellenfeld 'off1.id' in where clause"
Die Query ist mehrfach verschachtelt, kann ich auf Top-Level-Attribute in Subquerys nicht zugreifen?
ich stehe vor einem (für mich als SQL-Amateur) eher komplexeren Problem. Ich versuche mit folgender Abfrage eine Datenbank nach regionalen Einträge zu durchsuchen, wobei die verschiedenen Suchkriterien verschiedene Gewichtung in die Reihenfolge der Listung haben. - typisches Scoring-Prinzip.
SQL-Abfrage
- SELECT
- off1.*,
- (
- CASE WHEN off1.title LIKE '%tes%' THEN 100 WHEN vendors.NAME LIKE '%tes%' THEN 50 WHEN 1 IN (
- SELECT
- category_offer_links.category
- FROM
- category_offer_links
- LEFT JOIN categories ON categories.id = category_offer_links.category
- WHERE
- categories.title LIKE '%tes%'
- ) THEN 50 WHEN off1.description LIKE '%tes%' THEN 40 ELSE 0 END
- ) AS _matchesTextSearch,
- (
- CASE WHEN 1 IN (
- SELECT
- category_offer_links.category
- FROM
- category_offer_links
- WHERE
- category_offer_links.offer = off1.id
- ) THEN 100 ELSE 0 END
- ) AS _matchesCategorySearch,
- (
- SELECT
- (
- 100 / (
- Avg(distance) * 3
- )
- )
- FROM
- (
- SELECT
- (
- 6371 * Acos(
- Cos(
- Radians('48')
- ) * Cos(
- Radians(locations.latitude)
- ) * Cos(
- Radians(locations.longitude) - Radians('18')
- ) + Sin(
- Radians('48')
- ) * Sin(
- Radians(locations.latitude)
- )
- )
- ) AS distance
- FROM
- events
- LEFT JOIN venues ON events.venue = venues.id
- LEFT JOIN locations ON venues.location = locations.id
- WHERE
- events.offer = off1.id
- ) AS distance
- ) AS _matchesLocationSearch
- FROM
- offers AS off1
- LEFT JOIN vendors ON vendors.id = off1.vendor
- ORDER BY
- (
- _matchestextsearch + _matchescategorysearch + _matcheslocationsearch
- ) DESC
Es wird mir jedoch folgende Fehlermeldung zurückgegeben: "Unbekanntes Tabellenfeld 'off1.id' in where clause"
Die Query ist mehrfach verschachtelt, kann ich auf Top-Level-Attribute in Subquerys nicht zugreifen?
Auf der Suche nach Coding-Kursen auf Lence.at