macabre_sunsets Δημοσ. 23 Μαΐου 2011 Δημοσ. 23 Μαΐου 2011 Έχω το ακόλουθο query: >SELECT a.name, b.city, c.address, d.friend, country.country FROM ( user AS a LEFT JOIN place AS b ON a.city = b.city RIGHT JOIN info AS c ON a.address = c.address LEFT JOIN friends AS d ON c.fid = d.fid LEFT JOIN country ON country.cid = c.cid ) WHERE a.id LIKE '$id' ORDER BY a.name Όταν το εκτελώ στο phpmyadmin, μου επιστρέφει: #1052 - Column 'state' in field list is ambiguous Η στήλη state υπάρχει σε δυο πίνακες οπότε εν μέρη λογικό το σφάλμα. Ψάχνωντας για πιθανές λύσεις, αρκετοί προτείνουν την χρήση alias για τα tables. Στην περίπτωσή μου όμως, κάθε table έχει το δικό του alias, εκτός από το table country. Πώς γίνεται να μπερδεύει ακόμα η MySQL τις στήλες από τα διαφορετικά tables; Έχω ξεχάσει κάτι; Είναι γενικά λάθος το query; Έχω δοκιμάσει να βάλω alias και στο table country αλλά το σφάλμα δεν σταμάτησε να εμφανίζεται. Σημείωση: Πιθανώς δεν θα βγάλετε νόημα από το query με τα ονόματα των στηλών που έχω χρησιμοποιήσει, αλλά αυτά νομίζω πως δεν έχουν ιδιαίτερη σημασία. Επίσης, δυστυχώς δεν μπορώ να αναδιοργανώσω τα tables κάτι που ίσως έλυνε το πρόβλημά μου.
Tmark Δημοσ. 23 Μαΐου 2011 Δημοσ. 23 Μαΐου 2011 Κανονικά δεν έπρεπε να χτύπαγε αυτό το λάθος γιατί δεν κάνεις select το state. Ίσως το θέμα να είναι στα joins.
Uberalles_gr Δημοσ. 23 Μαΐου 2011 Δημοσ. 23 Μαΐου 2011 Γενικα, όταν χτίζω την βάση μου πάντα την δημιουργώ ως εξής: Έστω ότι θα φτιάξω τον πίνακα users τότε τα πεδία θα είναι τα use_id, use_name, use_surname , ... Δηλαδή παίρνω τα 3 πρώτα γράμματα από το όνομα του πίνακα μου Στο πρόβλημα σου τώρα, διάβαζα κάπου ότι πρέπει ένας από τους 2 πίνακες να είναι alias
macabre_sunsets Δημοσ. 23 Μαΐου 2011 Μέλος Δημοσ. 23 Μαΐου 2011 Εάν ήταν στο χέρι μου να δημιουργήσω την βάση από την αρχή θα έλυνα εύκολα το πρόβλημα. Δυστυχώς όμως η βάση είναι δεδομένη και δεν μπορώ να την αλλάξω κατά βούληση (βασικά είναι Access που έχει μετατραπεί σε SQL με ό,τι αυτό συνεπάγεται). Χμ, νομίζω βρήκα τι φταίει. Υπάρχει το πεδίο "state" και το "one-state". Είναι μη έγκυρο όνομα αυτό με την παύλα; Παρατήρησα πως όταν το γράφω έτσι (με την παύλα) τότε βγάζει το σφάλμα. Εάν το γράψω χωρίς την παύλα τότε δεν βγάζει σφάλμα. Το θέμα είναι πως ο πίνακας έχει μια στήλη "one-state" και μια "state", ενώ ο άλλος πίνακας έχει μια στήλη ονόματι "state". Καμια ιδέα; Να σημειώσω πως χρειάζομαι και τα δυο πεδία, οπότε αναγκαστικά μπαίνουν στο SELECT κάπως έτσι: "c.one-state, c.state". Ελπίζω να μην σας έχω μπερδέψει πολύ :/
Tmark Δημοσ. 23 Μαΐου 2011 Δημοσ. 23 Μαΐου 2011 Μου φαίνεται αν βάλεις την - πρέπει να το βάλεις έτσι : [dbo].[table].[One-State], με τις αγκύλες.
macabre_sunsets Δημοσ. 23 Μαΐου 2011 Μέλος Δημοσ. 23 Μαΐου 2011 Δοκίμασα και με αγκύλες αλλά τίποτα. Τελλικά φαίνεται πως λύθηκε χρησιμοποιώντας `` (c.state, c.`one-state`). Ευχαριστώ για τις απαντήσεις και την βοήθειά σας.
Uberalles_gr Δημοσ. 23 Μαΐου 2011 Δημοσ. 23 Μαΐου 2011 Αχ νόμιζα ότι ήσουν σε MS-SQL και όχι MySQL. Sorry Αχχχχχχχ :wub: :wub:
Uberalles_gr Δημοσ. 23 Μαΐου 2011 Δημοσ. 23 Μαΐου 2011 Τίτλος Πρόβλημα με MySQL query - Column '...' in field list is ambiguous Υ.Γ. Σε πειράζω φίλε
Tmark Δημοσ. 23 Μαΐου 2011 Δημοσ. 23 Μαΐου 2011 Ναι έχεις δίκιο, δεν έδωσα βάση στο My αλλά στο SQL και την πάτησα
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.