Ich habe bereits verschiedene Lösungen ausprobiert, aber es gibt mir immer noch den unten angezeigten Fehler - ich habe keine Ideen (Ich habe auch versucht, die ". $ _ SESSION [' plz '] „- Teil mit einer einfachen Zahl, aber alles hat sich nicht geändert:.Unbekannte Spalte in Feldliste (PHP + MySQL/PDO)
$profilequery = "SELECT teacher.teacher_id, teacher.plz, teacher.ort,
teacher.teacherprename, teacher.teachername, hours_week.hours_week, teacher.day_times,
teacher.grade, teacher.study, teacher.references, teacher_subjects.qualification,
teacher_subjects.subjectgrade, teacher_subjects.subjectqualification,
ABS (teacher.plz - ".$_SESSION['plz'].") AS distance FROM (
(
SELECT teacher.teacher_id, teacher.plz, teacher.ort,
teacher.teacherprename, teacher.teachername, hours_week.hours_week, teacher.day_times,
teacher.grade, teacher.study, teacher.references, teacher_subjects.qualification,
teacher_subjects.subjectgrade, teacher_subjects.subjectqualification FROM teacher LEFT JOIN
teacher_subjects
ON
teacher.teacher_id = teacher_subjects.teacher_id
LEFT JOIN
hours_week
ON
teacher.hours_id = hours_week.hours_id WHERE teacher.plz >= '".$_SESSION['plz']."'
AND teacher_subjects.status_id = '1' ORDER BY teacher.plz LIMIT 10
) UNION ALL (
SELECT teacher.teacher_id, teacher.plz, teacher.ort,
teacher.teacherprename, teacher.teachername, hours_week.hours_week, teacher.day_times,
teacher.grade, teacher.study, teacher.references, teacher_subjects.qualification,
teacher_subjects.subjectgrade, teacher_subjects.subjectqualification FROM teacher LEFT JOIN
teacher_subjects
ON
teacher.teacher_id = teacher_subjects.teacher_id
LEFT JOIN
hours_week
ON
teacher.hours_id = hours_week.hours_id WHERE teacher.plz >= '".$_SESSION['plz']."'
AND teacher_subjects.status_id = '1' ORDER BY teacher.plz LIMIT 10
)
) AS a
ORDER BY distance
LIMIT 10";
Und es wirft mich dies:
Spalte nicht gefunden: 1054 Unknown column 'plz' in 'Feldliste' 'in.
Ich sehe hier wirklich nichts falsch, hat vielleicht jemand eine Vorstellung davon, was für das Problem verantwortlich sein könnte? Ich bin dankbar für jede Hilfe!
EDIT: Der "Lehrer" gelöscht. und "teacher_subjects". Teil in den Abfragen (auch nur versucht, es in der Hauptabfrage zu löschen oder die Unterabfragen):
$profilequery = "SELECT teacher_id, plz, ort,
teacherprename, teachername, hours_week, day_times,
grade, study, references, qualification,
subjectgrade, .subjectqualification,
ABS (teacher.plz - ".$_SESSION['plz'].") AS distance FROM (
(
SELECT teacher_id, plz, ort,
teacherprename, teachername, hours_week, day_times,
grade, study, references, qualification,
subjectgrade, .subjectqualification FROM teacher LEFT JOIN
teacher_subjects
ON
teacher.teacher_id = teacher_subjects.teacher_id
LEFT JOIN
hours_week
ON
teacher.hours_id = hours_week.hours_id WHERE teacher.plz >= '".$_SESSION['plz']."'
AND teacher_subjects.status_id = '1' ORDER BY teacher.plz LIMIT 10
) UNION ALL (
SELECT teacher_id, plz, ort,
teacherprename, teachername, hours_week, day_times,
grade, study, references, qualification,
subjectgrade, .subjectqualification FROM teacher LEFT JOIN
teacher_subjects
ON
teacher.teacher_id = teacher_subjects.teacher_id
LEFT JOIN
hours_week
ON
teacher.hours_id = hours_week.hours_id WHERE teacher.plz >= '".$_SESSION['plz']."'
AND teacher_subjects.status_id = '1' ORDER BY teacher.plz LIMIT 10
)
) AS a
ORDER BY distance
LIMIT 10";
Und es wirft dies:
Integrität Einschränkungsverletzung: 1052 Spalte ‚lehrer_id‘ in Feldliste ich denke, es etwas zu tun mit der LEFT JOIN Teil (bevor es mit nur Auswahl
plz
undlehrer_id
mit diesem Teil gearbeitet. ich habe auch versucht, das PuttingLEFT JOIN
Teil ist nicht eindeutig
Jetzt das letzte Ende (nach dem Teil ALL UNION), aber es wirft immer noch einen Fehler auf.
EDIT 2: Gelöst es! -> hatte die Abfragen zu geben sowie die LEFT JOIN
s eindeutige Namen (as b
usw.) und dann beziehen sich auf sie richtig ->
$profilequery = "SELECT n.teacher_id, n.plz, n.ort,
n.teacherprename, n.teachername, n.hours_week, n.day_times,
n.grade, n.study, n.qualification,
n.subjectgrade, n.subjectqualification,
ABS (n.plz - ".$_SESSION['plz'].") AS distance FROM (
(
SELECT b.teacher_id, b.plz, b.ort,
b.teacherprename, b.teachername, sw.hours_week, b.day_times,
b.grade, b.study lf.qualification,
lf.subjectgrade, lf.subjectqualification FROM teacher as b LEFT JOIN
teacher_subjects as lf
ON
teacher.teacher_id = teacher_subjects.teacher_id
LEFT JOIN
hours_week as sw
ON
b.hours_id = sw.hours_id WHERE b.plz >= '".$_SESSION['plz']."'
AND lf.status_id = '1' ORDER BY b.plz LIMIT 10
) UNION ALL (
SELECT b.teacher_id, b.plz, b.ort,
b.teacherprename, b.teachername, sw.hours_week, b.day_times,
b.grade, b.study lf.qualification,
lf.subjectgrade, lf.subjectqualification FROM teacher as b LEFT JOIN
teacher_subjects as lf
ON
teacher.teacher_id = teacher_subjects.teacher_id
LEFT JOIN
hours_week as sw
ON
b.hours_id = sw.hours_id WHERE b.plz >= '".$_SESSION['plz']."'
AND lf.status_id = '1' ORDER BY b.plz LIMIT 10
)
) AS n
ORDER BY distance
LIMIT 10";
Vielen Dank viel ! Dies löste das Problem meines Schnipsel, ich habe vergessen, die "PLZ" dort aufzunehmen. Ich habe immer noch den gleichen Fehler in meiner ursprünglichen Abfrage und es enthält auch "plz" in den Unterabfragen :(. Ich werde es oben posten, vielleicht haben Sie auch eine Idee dafür? Trotzdem, danke! Und ja, ich bin wirklich nicht (noch): <. – Franky2207
Ihre neue Abfrage ist sehr seltsam, warum haben Sie SELECT SELECT nacheinander? Es sollte ein Fehler sein. Und warum in Ihrer Hauptabfrage benutzen Sie 'teacher.plz' und so weiter? Hauptabfrage ist von Unterabfragen und es sollte nur Spaltennamen 'PLZ' oder Alias' a.plz' geben – nospor
Nochmals vielen Dank (!), ich werde das morgen umgestalten.Um ehrlich, ich habe nie zuvor Unterabfragen und die Unterabfragen verwendet mit der ALL UNION war ein Tipp, den ich von einer anderen Seite übernommen habe - im Grunde wollte ich nur den ABS-Teil für die Auswahl der nächsten PLZ verwenden, und der ALL UNION-Teil einschließlich der Unteranfragen dient der Verbesserung der Leistung entsprechend der Seite ein Tippfehler - sorry! – Franky2207