SQL - Suche nach Scoring Methode

  • SQL

    SQL - Suche nach Scoring Methode

    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.

    SQL-Abfrage

    1. SELECT
    2. off1.*,
    3. (
    4. CASE WHEN off1.title LIKE '%tes%' THEN 100 WHEN vendors.NAME LIKE '%tes%' THEN 50 WHEN 1 IN (
    5. SELECT
    6. category_offer_links.category
    7. FROM
    8. category_offer_links
    9. LEFT JOIN categories ON categories.id = category_offer_links.category
    10. WHERE
    11. categories.title LIKE '%tes%'
    12. ) THEN 50 WHEN off1.description LIKE '%tes%' THEN 40 ELSE 0 END
    13. ) AS _matchesTextSearch,
    14. (
    15. CASE WHEN 1 IN (
    16. SELECT
    17. category_offer_links.category
    18. FROM
    19. category_offer_links
    20. WHERE
    21. category_offer_links.offer = off1.id
    22. ) THEN 100 ELSE 0 END
    23. ) AS _matchesCategorySearch,
    24. (
    25. SELECT
    26. (
    27. 100 / (
    28. Avg(distance) * 3
    29. )
    30. )
    31. FROM
    32. (
    33. SELECT
    34. (
    35. 6371 * Acos(
    36. Cos(
    37. Radians('48')
    38. ) * Cos(
    39. Radians(locations.latitude)
    40. ) * Cos(
    41. Radians(locations.longitude) - Radians('18')
    42. ) + Sin(
    43. Radians('48')
    44. ) * Sin(
    45. Radians(locations.latitude)
    46. )
    47. )
    48. ) AS distance
    49. FROM
    50. events
    51. LEFT JOIN venues ON events.venue = venues.id
    52. LEFT JOIN locations ON venues.location = locations.id
    53. WHERE
    54. events.offer = off1.id
    55. ) AS distance
    56. ) AS _matchesLocationSearch
    57. FROM
    58. offers AS off1
    59. LEFT JOIN vendors ON vendors.id = off1.vendor
    60. ORDER BY
    61. (
    62. _matchestextsearch + _matchescategorysearch + _matcheslocationsearch
    63. ) 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