first commit
This commit is contained in:
143
SELECT_FROM_AUTOCOMPLETE.md
Normal file
143
SELECT_FROM_AUTOCOMPLETE.md
Normal file
@@ -0,0 +1,143 @@
|
||||
# Erweiterte SQL Autocomplete - SELECT & FROM
|
||||
|
||||
## Übersicht
|
||||
Die Autocomplete-Funktionalität wurde erweitert und unterstützt jetzt sowohl Spalten-Vorschläge nach `SELECT` als auch Tabellen-Vorschläge nach `FROM`.
|
||||
|
||||
## Neue Funktionen
|
||||
|
||||
### 1. Spalten-Autocomplete nach SELECT
|
||||
**Aktivierung:**
|
||||
- Automatisch nach `SELECT ` (mit Leerzeichen)
|
||||
- Bei Komma-getrennten Spalten: `SELECT col1, `
|
||||
- Bei partieller Eingabe: `SELECT USE` (zeigt Spalten mit "USE")
|
||||
|
||||
**Intelligente Erkennung:**
|
||||
- Erkennt Tabelle aus FROM-Klausel automatisch
|
||||
- Lädt entsprechende Spalten-Schema dynamisch
|
||||
- Fallback zu allgemeinen Spalten wenn keine Tabelle erkannt
|
||||
|
||||
### 2. Kontext-bewusste Vorschläge
|
||||
**Mit erkannter Tabelle:**
|
||||
```sql
|
||||
SELECT | FROM USERS
|
||||
↑ Zeigt Spalten von USERS-Tabelle
|
||||
```
|
||||
|
||||
**Ohne Tabelle (allgemeine Optionen):**
|
||||
```sql
|
||||
SELECT |
|
||||
↑ Zeigt: *, COUNT(*), COUNT(1), ROWNUM, SYSDATE
|
||||
```
|
||||
|
||||
## Funktionsweise
|
||||
|
||||
### Muster-Erkennung
|
||||
1. **Nach SELECT**: `SELECT ` → Spalten-Autocomplete
|
||||
2. **Spalten-Liste**: `SELECT name, ` → Weitere Spalten
|
||||
3. **Partielle Eingabe**: `SELECT us` → Gefilterte Spalten
|
||||
4. **Nach FROM**: `FROM ` → Tabellen-Autocomplete
|
||||
|
||||
### Schema-Integration
|
||||
- **Dynamisches Laden**: Schema wird bei Bedarf vom Server abgerufen
|
||||
- **Typ-Anzeige**: Spalten zeigen Datentyp an (z.B. `NAME (VARCHAR2)`)
|
||||
- **Icons**: Unterschiedliche Icons für `*`, Spalten und Tabellen
|
||||
|
||||
### Keyboard-Navigation
|
||||
- **↓/↑**: Navigation durch Vorschläge
|
||||
- **Enter/Tab**: Auswahl übernehmen
|
||||
- **Escape**: Dropdown schließen
|
||||
- **Komma**: Automatische Trennung bei Mehrfach-Auswahl
|
||||
|
||||
## Beispiele
|
||||
|
||||
### Einfache Spalten-Auswahl
|
||||
```sql
|
||||
1. Tippe: SELECT
|
||||
2. Wähle: * oder spezifische Spalte
|
||||
3. Ergebnis: SELECT column_name
|
||||
```
|
||||
|
||||
### Mehrere Spalten
|
||||
```sql
|
||||
1. Tippe: SELECT name,
|
||||
2. Wähle: weitere Spalte aus Liste
|
||||
3. Ergebnis: SELECT name, email
|
||||
```
|
||||
|
||||
### Mit FROM-Kontext
|
||||
```sql
|
||||
1. Tippe: SELECT FROM USERS
|
||||
2. Autocomplete lädt USERS-Spalten automatisch
|
||||
3. Wähle aus USERS-spezifischen Spalten
|
||||
```
|
||||
|
||||
### Gefilterte Suche
|
||||
```sql
|
||||
1. Tippe: SELECT user
|
||||
2. Zeigt nur Spalten die "USER" enthalten
|
||||
3. z.B.: USER_ID, USER_NAME, USERNAME
|
||||
```
|
||||
|
||||
## Technische Details
|
||||
|
||||
### Neue JavaScript-Funktionen
|
||||
```javascript
|
||||
shouldShowColumnAutocomplete() // Erkennt SELECT-Kontext
|
||||
showColumnAutocomplete() // Zeigt Spalten-Dropdown
|
||||
extractTableNameFromQuery() // Findet Tabelle in FROM
|
||||
loadTableSchemaForAutocomplete() // Lädt Schema dynamisch
|
||||
selectColumnFromAutocomplete() // Fügt Spalte ein
|
||||
```
|
||||
|
||||
### State-Management
|
||||
```javascript
|
||||
autocompleteState = {
|
||||
isVisible: boolean,
|
||||
selectedIndex: number,
|
||||
items: array,
|
||||
triggerPosition: number,
|
||||
type: 'table' | 'column' // NEU: Unterscheidet Typ
|
||||
}
|
||||
```
|
||||
|
||||
### CSS-Verbesserungen
|
||||
- **Icons**: `fa-columns` für Spalten, `fa-asterisk` für *
|
||||
- **Typ-Info**: Grauer Text für Datentypen
|
||||
- **Header**: Kontextuelle Überschriften ("Spalten von USERS")
|
||||
|
||||
## Intelligente Features
|
||||
|
||||
### 1. Kontext-Analyse
|
||||
- Erkennt FROM-Klausel automatisch
|
||||
- Lädt passende Spalten für die Tabelle
|
||||
- Fallback bei fehlender/unklarer Tabelle
|
||||
|
||||
### 2. Smart-Insertion
|
||||
- Erkennt Position in SELECT-Liste
|
||||
- Ersetzt partielle Eingaben korrekt
|
||||
- Respektiert Komma-Trennung
|
||||
|
||||
### 3. Performance-Optimierung
|
||||
- **Caching**: Schema wird nicht doppelt geladen
|
||||
- **Limitierung**: Max. 15 Spalten, 10 Tabellen
|
||||
- **Lazy Loading**: Nur bei Bedarf laden
|
||||
|
||||
## Workflow-Integration
|
||||
|
||||
### Typischer Workflow
|
||||
1. **Start**: `SELECT ` → Allgemeine Spalten oder *
|
||||
2. **Tabelle**: `FROM tablename` → Spezifische Spalten verfügbar
|
||||
3. **Erweitern**: Zurück zu SELECT → Tabellen-spezifische Vorschläge
|
||||
4. **Verfeinern**: Komma + weitere Spalten auswählen
|
||||
|
||||
### Drag & Drop Integration
|
||||
- Funktioniert weiterhin parallel zu Autocomplete
|
||||
- Autocomplete für Tipper, Drag & Drop für Maus-User
|
||||
- Beide Methoden ergänzen sich perfekt
|
||||
|
||||
## Erweiterbarkeit
|
||||
Die Architektur unterstützt zukünftige Erweiterungen:
|
||||
- **WHERE-Autocomplete**: Spalten + Operatoren
|
||||
- **JOIN-Unterstützung**: Multi-Tabellen-Queries
|
||||
- **Funktions-Vorschläge**: SQL-Funktionen
|
||||
- **Alias-Erkennung**: Tabellen-Aliases berücksichtigen
|
||||
Reference in New Issue
Block a user